遞歸--跳台階問題


題目描述:

一個台階總共有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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM