一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
可以用递归的思想来分析这个问题:假设最后剩下一个台阶,那么仅有一种跳法,假设最后剩下两个台阶,那么还有两种跳法(一次跳一个,跳两次;一次跳两个,跳一次)。所以我们可以分析得到sum=f(n-1)+f(n-2);倒推发现这也就是斐波那契数列。所以这个题目就可以用递归的方法来解决,但是递归又十分消耗空间,所以我们也给出了第二种方法。
#include <iostream>
using namespace std;
int jump1(int number)
{
int sum = 0;
if (number == 1)
return 1;
else if (number == 2)
return 2;
else
{
sum = jump1(number - 1) + jump1(number - 2);
}
return sum;
}
int jump2(int num)
{
int f1=1,f2=2;
if(num<3)
return num;
else
{
int i=3;
while(i<=num)
{
f2=f1+f2;
f1=f2-f1;
i++;
}
}
return f2;
}
int main()
{
int n=10;
cout<<jump1(n)<<endl;
cout<<jump2(n)<<endl;
return 0;
}