C语言学习(第二十课)初识函数5(函数递归2)

#define _CRT_SECURE_NO_WARNINGS 1

#include<stdio.h>
#include<string.h>


//编写函数,不允许创建临时变量,求字符串长度
///1、可以使用临时变量的写法:
//int my_strlen(char* str)
//{
//    int count = 0;
//    while (*str != '\0')
//    {
//        count++;
//        str++;
//    }
//    return count;
//}


//2、不适用临时变量,使用递归的写法:

//int my_strlen(char* str)
//{
//    if (*str != '\0')
//        return 1 + my_strlen(str + 1);
// //这里不允许写成str++或++str。因为str++是先输出str再++。括号内的值会变成str++的值。结果是错误的。
//    else
//        return 0;
//}


//
// int main()
//{
//     char arr[] = { "hello world" };
//
//     //printf("%d\n", strlen(arr));//一般使用strlen函数求字符串长度。
//
//     printf("%d\n", my_strlen(arr));
//
//    return 0;
//}

//函数递归与迭代
//C语言中,循环语句也是一种迭代。

//计算n的阶乘:
//正常写法:使用循环语句

//int main()
//{
//    int n = 0;
//    scanf("%d", &n);
//    int i = 0;
//    int ret = 1;
//    for (i = 1;i <= n;i++)
//    {
//        ret = ret * i;
//    }
//    printf("%d\n", ret);
//    return 0;
//}

//使用递归写法:
//int Fac(int n)
//{
//    if (n <= 1)
//        return 1;
//    else
//        return n * Fac(n - 1);
//}
//
//int main()
//{
//    int n = 0;
//    scanf("%d", &n);
//    int ret = Fac(n);
//    printf("%d\n", ret);
//    return 0;
//}

//求n的阶乘即可以使用递归,也可以使用迭代的方式进行计算。

//求第n个斐波那契数的值,不考虑溢出;
// 
// 1、使用公式直接套用到函数中,可以使用,但是效率特别低。如果n输入40,需要计算的次数为39088169次。
// 
// int count = 0;
// 
//int Fib(int n)
//{
//  if (n == 3)
//  count++;
//    if (n <= 2)
//        return 1;
//    else
//        return Fib(n - 1) + Fib(n - 2);
//}

//在函数中不使用递归,而是使用迭代的写法,会大大提高效率。(循环语句也是一种迭代)。
//int Fib(int n)
//{
//    int a = 1;
//    int b = 1;
//    int c = 1;
//    while (n < 2)
//    {
//        c = a + b;
//        b = a;
//        a = c;
//    }
//    return c;
//}
//
//int main()
//{
//    int n = 0;
//    scanf("%d", &n);
//    int ret = Fib(n);
//    printf("%d\n", ret);
//    //printf("count = %d\n", count);
//    return 0;
//}


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/743419.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安卓Java面试题 121- 130

131. Android垃圾回收机制和程序优化System.gc( ) ?垃圾收集算法的核心思想:对虚拟机的可用内存空间,即堆空间中的对象进行识别,如果对象正在被引用,则称其为存活对象,反之,如果对象不再被引用,则为垃圾对象,可以回收其占据的空间,用于再分配。 JVM进行次GC的频率很高…

Linux系统——Nginx脚本拦截拓展

可能会有些无聊的人对服务器的Nginx服务进行恶意访问网站、API接口&#xff0c;会影响到用户的体验&#xff0c;我们可以做一个简单的脚本对恶意访问的IP做一个有效的拦截&#xff0c;揪出这些IP地址&#xff0c;然后将其进行禁用。 在Nginx的conf目录下新建一个blockip.conf文…

Python(C_Cpp)分析模拟Arduino和Raspberry Pi(单板机)CAN总线和车载单元测试

要点 CAN总线释义&#xff1a;物理层结构&#xff0c;数据帧&#xff0c;数据交换&#xff0c;总线接口物理模块。一对Arduino CAN &#xff08;Arduino C 处理&#xff09;总线项目&#xff1a; 发送端发送随机数据&#xff0c;接收端接收并计算。发送端点动信号&#xff0c;…

certificate has expired or is not yet valid:npm和node证书过期问题

在 1 月 22 日&#xff0c;淘宝原镜像域名&#xff08;registry.npm.taobao.org&#xff09;的 HTTPS 证书正式到期。如果想要继续使用&#xff0c;需要将 npm 源切换到新的源&#xff08;registry.npmmirror.com&#xff09;&#xff0c;否则会报错。 解决方案切换到新的源&a…

HTML表单

本文章属于学习笔记&#xff0c;在https://www.freecodecamp.org/chinese/learn/2022/responsive-web-design/中练习 四、HTML表单 CSS 1、vh单位表示视口高度&#xff0c;等于视口高度的1%。这使得它相对于视口高度。height:100vh; 2、设置 body 的默认 margin 为 0 来重置…

【掌握版本控制:Git 入门与实践指南】远程操作|标签管理

&#x1f3ac;慕斯主页&#xff1a;修仙—别有洞天 ♈️今日夜电波&#xff1a;泥中に咲く—ウォルピスカーター 0:34━━━━━━️&#x1f49f;──────── 4:46 &#x1f504; ◀️ ⏸ ▶…

汽车IVI中控开发入门及进阶(十三):语音识别

前言: IVI中控上的语音识别,在目前市场上也是非常显眼的一个创新,大幅改变了传统IVI的操作习惯。 语音识别Speech recognition,也称为自动语音识别(ASR)、计算机语音识别或语音到文本,是一种使程序能够将人类语音处理成书面格式的能力。 语音识别Speech recognition是计…

数码管的静态显示(二)

1.原理 要按照上图的顺序传递位选和段选的数据。 因为q0是最高位&#xff0c;共阳极数码管结构是dp....a&#xff0c;所以应该先传入低位a&#xff0c;而a在上图中的8段2进制编码中是seg[7]&#xff0c;所以段选信号的顺序是seg[0],...seg[7]。 因为输出信号是两个时钟&#x…

Docker入门笔记(1)

Docker入门笔记&#xff08;1&#xff09; 容器技术入门 之前我的WIT问卷管理系统在阿里云上部署需要好多配置&#xff0c;各个环境耦合的比较紧密&#xff0c;花了不少时间去做部署和调配。 现在有了Docker以后&#xff0c;我们可以把各种组件配置好&#xff0c;然后打包成…

使用ScottPlot库在.NET WinForms中快速实现大型数据集的交互式显示

前言 在.NET应用开发中数据集的交互式显示是一个非常常见的功能&#xff0c;如需要创建折线图、柱状图、饼图、散点图等不同类型的图表将数据呈现出来&#xff0c;帮助人们更好地理解数据、发现规律&#xff0c;并支持决策和沟通。本文我们将一起来学习一下如何使用ScottPlot库…

C语言snprintf():将格式化字符串输出到数组中

snprintf() 是 C语言的一个标准库函数&#xff0c;定义在<stdio.h>头文件中。 snprintf() 函数的功能是格式化字符串&#xff0c;并将结果存储在指定的字符数组中。该函数的原型如下&#xff1a; int snprintf(char *str, size_t size, const char *format[,argument...…

websocket逆向案例

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、案例地址二、分析流程三、逆向参数四、webSocket 交互位置总结 前言 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;不提供…

OPPO后端二面,凉了!

这篇文章的问题来源于一个读者之前分享的 OPPO 后端凉经&#xff0c;我对比较典型的一些问题进行了分类并给出了详细的参考答案。希望能对正在参加面试的朋友们能够有点帮助&#xff01; Java String 为什么是不可变的? public final class String implements java.io.Seri…

Python: for,while循环语句

注意&#xff1a;本文引用自专业人工智能社区Venus AI 更多AI知识请参考原站 &#xff08;[www.aideeplearning.cn]&#xff09; While循环 while循环用于在给定条件为真时重复执行一段代码。它会一直执行循环体内的代码&#xff0c;直到条件不再为真。这种循环特别适合于你…

‘UnityEngine.Application‘ does not contain a definition for isBatchMode

unity 2017.4.37f1. 解决办法: Try to replace Application.isBatchMode with UnityEditorInternal.InternalEditorUtility.inBatchMode

AUTOSAR汽车电子嵌入式编程精讲300篇-汽车CAN总线中的 信息安全与通信协议(续)

目录 4 基于AES算法的CAN总线加密通信 4.1 CAN总线加密通信流程设计 4.2 AES算法 4.2.1 算法实现

前端实现读取word文件,并将其进行原样式展示的几种方案

在前端直接读取并原样展示Word文档是一个相对复杂的任务&#xff0c;因为Word文档的格式&#xff08;如.doc或.docx&#xff09;与Web技术栈使用的格式&#xff08;HTML、CSS&#xff09;不兼容。要实现这一功能&#xff0c;通常需要将Word文档转换为Web友好的格式。以下是实现…

Ps:拾色器

在 Adobe 拾色器中&#xff0c;可以使用四种颜色模型来设置颜色&#xff1a;HSB、RGB、Lab 和 CMYK。 使用“拾色器”对话框可以设置前景色、背景色、填充颜色、文本颜色及专色等的颜色值。 ◆ ◆ ◆ 常用操作方法与技巧 1、注意观察“拾色器”对话框标题栏中括号里的内容&am…

交换排序实现

文章目录 冒泡排序快速排序快排的优化单次快排的其他方案快排的非递归实现 冒泡排序 冒泡排序&#xff0c;Bubble sort,通过重复遍历要排序的数列&#xff0c;比较每一对相邻元素&#xff0c;并在顺序错误时交换它们。这个过程一直重复&#xff0c;直到没有需要交换的相邻元素为…

动态规划 Leetcode 1049 最后一块石头的重量

最后一块石头的重量 Leetcode 1049 学习记录自代码随想录 要点&#xff1a;1.想到求最后剩下石头的重量可以转化为求石头组合重量最接近石头重量总和的一半和此时剩下石头重量的差值&#xff0c;从而联想到Leetcode 416此题便可以相同套路求解 class Solution { public:int…