函数--递归调用
1.怎么写出一个递归函数
step1,写好公式
公式是怎么得出的?一般来说通过数学上的归纳演绎、总结得出,具体看下面的例子。
step2,一定要写结束条件
这一步比较简单,还是得到公式比较关键。
2.走楼梯
Description
假如有n个台阶,一次只能上1个台阶或2个台阶,请问走到第n个台阶有几种走法?为便于读者理解题意,这里举例说明如下:假如有3个台阶,那么总计就有3种走法:第一种为每次上1个台阶,上3次;第二种为先上2个台阶,再上1个台阶;第三种为先上1个台阶,再上2个台阶。输入为n,输出为走到第n个台阶有几种走法
Input
比如输入是3
Output
如果输入是3,走到第3个台阶的走法总计有3种,1,1,1 和 1,2 和2,1,输出为3
2.1 找公式
- 归纳,设台阶共n级,
- 若n=1,则共1种;
- 若n=2,则有2种;
- 若n=3,则有3种;
- 若n=4,则有?
n = 4 1 1 1 1 1 1 2 1 2 1 2 1 1 2 2 n=5 1 1 1 1 1 1 1 1 2 1 1 2 1 1 2 1 1 2 1 1 1 1 2 2 2 2 1 2 1 2
- 若n=4,共有5种;
- 若n=5,共有8种。
故由归纳演绎可知,step(n)= step(n-1)+step(n-2)
,公式找到。
2.2 确定结束条件
首先,我们要知道调用函数f(n),这个f(n)
实际上代表了函数的返回值。在走楼梯问题中,当n=3时,return step(1)+step(2)
,而再往下台阶不可能等于0或小于0,所以找到了结束条件。
2.3 函数实现
#include <stdio.h> //递归调用 int step(int n) { if(1 == n || 2 == n) //第二步,确定结束条件 { return n; } return step(n-1) + step(n-2); //第一步,写好公式 } int main() { int n; //几级台阶 int num = 0; //共几种走法 scanf("%d", &n); num = step(n); printf("%d\n", num); return 0 ; }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)