课程名称:物联网/嵌入式工程师
章节名称:第4周之第四讲 1-18 至 1-19 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; }
通过学习递归函数,有了新的编程思路。在解决循环问题上有了新的解法。