You are climbing a stair case. It takes n steps to reach to the top.
Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?
完全是靠列举结果,推出迭代公式,发现就是斐波那契数列的形式,即当n>=3时,f(n)=f(n-1)+f(n-2)。
C++代码实现:
#include<iostream> using namespace std; class Solution { public: int climbStairs(int n) { if(n==0) return 0; if(n==1) return 1; if(n==2) return 2; int n1=1; int n2=2; int sum=0; while(n>2) { sum=n1+n2; n1=n2; n2=sum; n--; } return sum; } }; int main() { int n=5; Solution s; cout<<s.climbStairs(n)<<endl; }
运行结果: