【九月打卡】第18天【养成记】嵌入式挑战第18天,递归函数
2022/9/25 3:17:16
本文主要是介绍【九月打卡】第18天【养成记】嵌入式挑战第18天,递归函数,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
课程章节:
课程名称:物联网/嵌入式工程师
章节名称:第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; }
课程评价:
通过学习递归函数,有了新的编程思路。在解决循环问题上有了新的解法。
这篇关于【九月打卡】第18天【养成记】嵌入式挑战第18天,递归函数的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-19永别了,微服务架构!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?