递归算法:爬楼梯问题

更新时间:2023-06-19 21:59:39 阅读: 评论:0

递归算法:爬楼梯问题
问题描述:
某⼈需要爬楼梯,他可以每次⾛1级或2级楼梯,输⼊楼梯的级数,求不同的⾛法数
例如:楼梯⼀共有3级,他可以每次都⾛1级;或者第⼀次⾛1级,第⼆次⾛2级;也可以第⼀次⾛2级,第⼆次⾛1级。⼀共有3种爬楼梯的⽅法。
猫咪踩奶
输⼊:
输⼊包含若⼲⾏,每⾏包含⼀个正整数N,代表楼梯的级数,1<=N<=30全头烫发型图片
输出:
不同的⾛法数,每⼀⾏输⼊对应⼀⾏的输出
样例输⼊:
5
8
10
样例输出:
8
34
89
关于梦想的演讲问题的分析及解决:
这题是⼀道递归的算法题。题⽬的核⼼难点只有⼀个,如何⽤递归思想去解决看似是排列组合的问题。
假设有N级台阶,有⼀个函数int Stairs(int N),可以输出N级台阶的⾛法。关于这N级台阶的爬楼梯⽅法,如果第⼀步⾛1级,那么剩下的N-1级台阶有Stairs(N-1)种⾛法;如果第⼀步⾛2级,那么剩下的N-2级台阶有Stairs(N-2)种⾛法。
即有:Stairs(N)=Stairs(N-1)+Stairs(N-2)
有么有很熟悉,斐波那契数列啊~当N=1时,有Stairs(1)=1;N=2,Stairs(2)=2 显然,这2个条件可以作为递归的终⽌条件,那么这个算法的代码也就轻易可以写出了
代码:
#include <iostream>
referendumusing namespace std;
int stairs(int N);
void main()
{
int N;
while (cin >> N)
{
if (N <= 0 || N >= 30)//加个条件控制,不满⾜条件就退出  {
经典网游cout << "Parameter Overflow";
return;
}
el
cout << stairs(N) << endl;
}
}
int stairs(int N)
{
if (N == 1)
return 1;
el if (N == 2)
范宜军return 2;
el
return (stairs(N - 1) + stairs(N - 2));
住校生}
摇头晃脑的近义词

本文发布于:2023-06-19 21:59:39,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1046074.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:问题   递归   楼梯   条件   爬楼梯   算法
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图