爬樓梯

假設你正在爬樓梯,須要n步你才能到達頂部。但每次你只能爬一步或者兩步,你能有多少種不一樣的方法爬到樓頂部?算法

樣例code

好比n=3,1+1+1=1+2=2+1=3,共有3中不一樣的方法遞歸

返回 3it

 

class Solution {
public:
/**
* @param n: An integer
* @return: An integer
*/
int climbStairs(int n) {
// write your code here
long int Ways_Num[100];
Ways_Num[0] = 1;
Ways_Num[1] = 1;
for (int i = 2; i < 100; i++)
Ways_Num[i] = Ways_Num[i - 1] + Ways_Num[i - 2];
return Ways_Num[n];
}
};io

 

要想爬到第n階樓梯,有兩種方法,一是從第n-1階爬一步,另外一種是從第n-2階爬兩步,所以問題爲NUM[n]=NUM[n-1]+NUM[n-2],便可獲得全部的結果,但遞歸算法會重複屢次計算某一階的方法,所以當樓梯數過大時,計算會很是耗費時間。class

例如:當樓梯數爲6時,屢次重複計算5,4,3,2階的方法數,因此遞歸併非一個好方法。 cli

相關文章
相關標籤/搜索