有n級樓梯,有2種爬法,1次1級,或1次2級,問,n級樓梯有多少種爬法?當n < 0時,無解,當n = 1 時,f ( n ) = 1, 當n = 2時,有兩種方法,一次1級爬2次,或一次2級,
f (n) = 2。當 n > 2時,第一次跳一級還是兩級,決定了後面剩下的台階的跳法數目的不同:如果第一次只跳一級,則後面剩下的n-1級台階的跳法數目為f(n-1);如果第一次跳兩級,則後面剩下的n-2級台階的跳法數目為f(n-2)。所以,得出遞迴方程,f(n) = f(n-1) + f(n-2)。問題本質是斐波那契數列。
/**上台階問題,遞迴求解**/
public static int jumpstepfibonacci(int n,int m)
public static void main(string args)
迭代法和遞迴法相比,核心思想沒有變,只是將遞迴方法變為迭代。
/**上台階問題,迭代法**/
public static int jumpstepiter(int n,int m)
return res;
}
/**上台階問題,dp**/
public static int climbstairs(int n) else
}public static int fib03(int n)
if (n == 1 || n == 2) else
}
public static void main(string args)
測試結果:n=20時,隨機測了幾次,明顯看出,迭代法、備忘錄模式、動態規劃是乙個數量級的,效率較遞迴高。
python爬樓梯演算法 爬樓梯(Python3)
假設你正在爬樓梯。需要 n 階你才能到達樓頂。每次你可以爬 1 或 2 個台階。你有多少種不同的方法可以爬到樓頂呢?注意 給定 n 是乙個正整數。示例 1 輸入 2 輸出 2 解釋 有兩種方法可以爬到樓頂。1 階 1 階 和 2 階 解題思路 實現了兩種方法,但是第一種超出時間限制 因為遞迴的時候方...
爬樓梯演算法
有n階樓梯,有1,2,3 走m步走完樓梯,一共有多少種走法,並輸出所有的走法 設走n階台階的走法數為 f n 可以得到 f 1 1 f 2 2 f 3 4 對於n 3時,縮小問題規模 最後一步上乙個台階的話,之前上了n 1個台階,走法為f n 1 最後一步上兩個台階的話,之前上了n 2個台階,走法為...
爬樓梯問題
ok,前段時間在一篇blog上看到乙個關於樓梯的面試題,大概內容如下 現有乙個人,規定他上樓梯時只能一步走乙個台階或者兩個台階。要求 給定任意樓梯的階數,求共有多少種方法爬完樓梯。如果有經驗可以看出,這是一道遞迴的題目。不過這個遞迴 程式怎麼寫呢?我的思路是可以這樣想,不管他前面 怎麼爬,最後總是要...