【C 语言基础】青蛙跳台阶和汉诺塔问题,985研究生被小公司领导留了3年

本文通过递归和非递归两种方式探讨了青蛙跳台阶问题及汉诺塔问题的解决方案。分析了跳台阶问题的规律,得出跳法次数与斐波那契数列的关系,并提供了递归和非递归的C语言实现。同时,介绍了汉诺塔问题,指出解决步骤并给出递归算法。
摘要由CSDN通过智能技术生成

思路

遇见题目我们可以在纸上先动手画画,把最简单的几种方式列出来,作比较,找规律。

| 台阶数n | 跳法次数 | 过程 |

| :-- | :-- | — |

| 1 | 1 | [1] |

| 2 | 2 | [1,1],[2] |

| 3 | 3 | [1,1,1],[2,1],[1,2] |

| 4 | 5 | [1,1,1,1],[2,1,1],[1,2,1],[1,1,2],[2,2] |

| 5 | 8 | [1,1,1,1,1],[2,1,1,1],[1,2,1,1],[1

《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》

【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享

,1,2,1],[1,1,1,2],[2,2,1],[2,1,2],[1,2,2] |

| … | … | … |

分析

按照上面表格可以从跳法次数,过程,或者两者结合找规律

1. 从跳法次数分析

  • 观察表格,可以知道从n>=3时,第n个数就是前两个数的和(与斐波那契数列一样)
  • 我们自己推论,当台阶数为n时,设跳法有f(n)次,如果青蛙先跳1阶,则剩下的台阶数为n-1,即剩余跳法有f(n-1)次;如果青蛙先跳2阶,则剩下的台阶数为n-2,即剩余跳法有f(n-2)次。
  • 故跳法次数f(n)=f(n-1)+f(n-2),因为等号右边有两个值,故当n=1,n=2时为最后的特殊限制条件
  • 下面代码为递归求法,如果想用非递归,可以将递归通项改成循环
代码1(递归)

#include <stdio.h>

int jump(int n)

{

if (n == 1)

return 1;

if (n == 2)

return 2;

return j

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值