你的点赞评论就是对博主最大的鼓励
当然喜欢的小伙伴可以:点赞+关注+评论+收藏(一键四连)哦~
🍊自我介绍
Hello,大家好,我是小珑也要变强(也是小珑),我是易编程·终身成长社群一名“创始团队·嘉宾” ,现在我来为大家介绍一下有关嵌入式方面的内容。在进入介绍之前,可能有一些小伙伴不了解易编程·终身成长社群;想要进一步了解社群的小伙伴可以点击下方链接自行跳转至关于社群的介绍:
易编程·终身成长社群介绍 :
https://blog.csdn.net/weixin_74300052?spm=1011.2266.3001.5343
🍊递归函数
概念:在函数体内,自己调用自己,直到某个条件满足才结束调用。这样的函数我们叫做递归函数。
引入递归:
如果我们要求取 5! ,你会运用哪种方法?
①5 * 4!
②5 * 4 * 3!
③5 * 4 * 3 * 2!
④5 * 4 * 3 * 2 * 1 ====>递推结束条件
递归有两个阶段:
递推:①到④
回归: 从return 开始回归,④到①
递推与回归代码解释:
递推:
主函数—>AO–>BO–>CO
回归:
CO中返回ret值给BO中的ret,按顺序返回AO,main函数
#include <stdio.h>
int AO();
int BO();
int CO();
int main()
{
int t = AO();
return 0;
}
int AO()
{
int ret = BO;
return ret;
}
int BO()
{
int ret = CO;
return ret;
}
int CO()
{
int ret = 800;
return ret;
}
递归例题:
古有善切饼者,名庖丁,庖丁之弟也。把一张大饼置于板上,不许离开,每一刀切下去都是一条直线。问切20刀最多能分成多少块?(切记不是平分)
我们来进行分析以下,我们设n表示切的刀数,a( n )表示切n刀可以得到的块数。
(1)我们一刀都不切
n = 0
a(0) = 1
(2)当我们切刀的时候
a(1) = 1 + 1 = 2 //切1刀多1块
a(2) = 2 + 2 = 4 //切2刀多2块
a(3) = 4 + 3 = 7 //切3刀多3块
a(4) = 7 + 4 = 11 //切4刀多4块
...
我们得到规律:
a(n) = a(n - 1) + n //切n刀多n块
代码解决:
#include <stdio.h>
//a(n) = a(n - 1) + n
//计算切n刀得到的饼数
int cutpie(int x)
{
int sum = 0;
if(n == 0)
return 1
sum = cutpie(n - 1) + n;
return sum;
}
int main()
{
int n = 0;
int num = 0;
printf("please input you want to cut knift number:");
scanf("%d",&n);
num = cutpie(n);
printf("num = %d\n",num);
return 0;
}
函数调用过程: