爬楼梯

时光毁灭记忆、已成空白 提交于 2019-11-29 05:07:33

又是一个递归;

感觉这个题和斐波那契数列差不多的耶

和斐波那契数列的关系差不多,

只不过前两项是1和2,

而不是1和1;

后面基本一样都是an=an-1+an-2;

因为每次只能爬一个或者两个;

所以可以分两类考虑,

一类就是最后差一个;

另一类就是最后差两个;

差一个的时候,前面走的就和上一个数(an-1)一样,

只需再走一个;

差两个的时候,前面走的就和上上个数(an-2)一样;

只需再走两个;

所以就和斐波那契数列一样。

 1 #include<iostream>
 2 using namespace std;
 3 int ans(int);
 4 int main()
 5 {
 6     int n;
 7     while(cin>>n)
 8     cout<<ans(n)<<endl;
 9     return 0;
10 }
11 int ans (int x)
12 {
13     if(x==1) return 1;
14     else if(x==2) return 2;
15     else return ans(x-1)+ans(x-2);
16 }

每日打卡O(∩_∩)O~~

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!