c语言:递归

二、递归(2个经典例题)

递归核心:终止条件 + 递推公式

1.定义:函数的自我调用,自己调用自己,每次调用都会逼近临结条件,知道达到条件为止。

例:int main()

{ printf("haha");

main();

return 0;

}

因为没有临界条件,它会不停打印haha

2.递归的限制:有限制条件

向条件靠近

3.公式类题型:翻译公式+判断是否存在特殊项需要单独存放

4.递归一般可以用循环代替,有时循环的效果更好

5.如果无限递归,会出现栈溢出的情况

6.递归时函数自己调用自己,所以一定要设函数。

比如:int func(int a)

{

if()

{

return x;

}

复制代码
    return func(m);

}

7.一般题型

顺序打印(如果不用递归就要用数组)

求阶层:公式

斐波那契数列:公式

青蛙跳阶问题:先分清最后到底要多少步才能跳上去,再往回反推。fact=fact(n-k1)+fact(n-k2);

汉若塔:void hanoi(int n, start, temp, desd)

{

if(n == 1)

{

printf("%c → %c\n",a,c);

return;

}

hanoi(n-1,a,c,b); //把n-1个从a移到b,c辅助

printf("%c → %c\n",a,c);

hanoi(n-1,b,a,c); //把n-1个从b移到c,a辅助

}

逻辑:

  1. n==1,直接移动,递归出口
  2. 先把上面n-1盘子移到中转柱
  3. 移动最底下最大圆盘到目标
  4. 再把n-1个从中转移到目标
相关推荐
Nebula_g1 小时前
JavaSE加强:Stream流
java·开发语言·windows·stream·javase·流
估值探索者1 小时前
【Python量化系统工程实战 #08】从脚本到生产:量化系统上线 checklist 的最小闭环
java·开发语言·jvm·python·数据挖掘·数据·股票数据api接口
Wang's Blog1 小时前
Java框架 SpringCloud 快速入门: Nacos 环境隔离
java·开发语言·spring cloud
万年咸鱼2 小时前
解决C语言的内存释放机制
java·c语言·python
一木 之林2 小时前
DeepSeek Agent 开发(三)
java·大数据·linux
edtoplort2 小时前
OpenAI紧急叫停GPT-6.1 Astra训练,奥尔特曼为何踩刹车
人工智能·gpt·算法
蒜香可达鸭2 小时前
让视频生成流水线跑不崩:一个事件溯源的多 Agent 可靠执行框架
算法
denlaku2 小时前
JDK 10 新特性详解
java·开发语言
程序员耄耋2 小时前
JDK21的下载与安装(2025.8.2)
java