课程章节:
课程名称:物联网/嵌入式工程师
章节名称:第4周之第四讲 1-18 至 1-19 C语言中的函数:递归函数
讲师姓名:大白老师
课程内容:
C语言中的函数:递归函数
概念
概念:在函数体内,自己调用不断的调用自己,直到某个条件满足才结束调用。
这样的函数我们叫做递归函数。
说明
例如:我们要求5!,该怎么求?
①5 * 4!
↓
② 5 * 4 * 3!
↓
③ 5 * 4 * 3 * 2!
↓
④ 5 * 4 * 3 * 2 * 1 ====> 递推结束条件
我们递归函数两个阶段:
1、递推 : 从 ①到④ 开始
2、回归 : 从return开始回归,④到①
解题思路:
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>
//计算切n刀所的饼数
int cutpie(int n) //4
{
int sum = 0;
//思考:什么时候结束
if(n == 0)
return 1;
sum = cutpie(n - 1) + n;
return sum;
}
int main(int argc, const char *argv[])
{
int n = 0;
int num = 0;
printf("please input you want to cut knife_number : ");
scanf("%d",&n);
num = cutpie(n);
printf("num = %d\n",num);
return 0;
}
学习笔记:
#include <stdio.h>
void factorial(const int number,int n)
{
int i = number;
if ( i - 1 > 0 ) {
n = i;
n = n * (i-1);
factorial(i - 1,n);
}
return;
}
int main()
{
int n = 0;
printf("请输入一个数:\n");
scanf("%d",&n);
factorial(n,n);
printf("\n");
return 0;
}
课程评价:
通过学习递归函数,有了新的编程思路。在解决循环问题上有了新的解法。