題目描述:
一個台階總共有n級,如果一次可以跳1級,也可以跳2級。求總共有多少總跳法,並分析算法的時間復雜度。
解題思路:這是一道典型的用遞歸求解的題目。我們可以這樣考慮問題,當只有一級台階時,那么久只有一種跳法;當有兩級台階時,那么就會有兩種跳法:一次跳一級或一次跳兩級。當n>2時,那么我們就以用第一次跳時就可以跳一級或者兩級,於是就有:f(n)=f(n-1)+f(n-2)。這樣遞歸的公式就出來的,馬上就可以用遞歸的方法來解決。但是遞歸的方式占用棧的空間是按照遞歸深度的級數遞增的,所以遞歸只能求級數比較少的情況。
代碼:
//跳台階 #include <stdio.h> int Stair(int n) { if (n == 1) return 1; else if ( n == 2) return 2; return Stair(n-1) + Stair(n-2); } int main() { int n; scanf("%d",&n); printf("Total : %d\n",Stair(n)); return 0; }
2013/5/29 15:29