遞歸求解斐波那契fib(10)一共調用了多少次fib()函數


定義fib()如下:

int fib(int n)
    {
        count ++;
        if (n==0)
            return 1;
        else if (n==1)
            return 1;
        else
            return fib(n-1) + fib(n-2);
    }

由原來fib的地推公式得出求解次數的地推公式。

那么Count(fib(10)) = count(fib(9))  + count(fib(8)) + 1;

求解count( fib(n) ) 的次數,就是計算fib(n)遞歸樹(是一個二叉樹),葉子結點的個數。

count( fib(0) ) = 1

count( fib(1) ) = 1

count( fib(2) ) = count ( fib(1) ) + count( fib(0) )  + 1 = 3

count( fib(3) ) = count ( fib(2) ) + count( fib(1) )  + 1 = 3+1+1 = 5

這個樣子計算的還是很快的

fib(10),一共調用了 177次。

其實上面是360的一道面試題


免責聲明!

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



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