Problem
一个台阶总共有n级,一次可以跳一格,也可以跳两格,问总共有多少种跳法。
Solution
以F(n)表示n级台阶的跳法总数。
n=1时,只有一种跳法,一次跳一格。
n=2时,有两种跳法。跳法1:跳两步每次一格;跳法2:跳一步两格。
当n较大时,从最后一步到达第n格只有两种方法。跳法1:最后一步跳一格,所以需要知道F(n-1).跳法2:最后一步跳二格,需要知道F(n-2)。因此问题退化为熟知的Fibonacci数列问题。
F(n)=n(n=1or2)
F(n)=F(n−1)+F(n−2)
Source code
#include <iostream>
using namespace std;
int Fibonacci(int n)
{
if (n == 1 || n == 2)
return n;
else
return Fibonacci(n - 1) + Fibonacci(n - 2);
}
int main()
{
int n;
cout << "Please input the number of steps ";
cin >> n;
cout << "There are "<<Fibonacci(n) << " ways\n";
}