码迷,mamicode.com
首页 > 其他好文 > 详细

递归求解斐波那契fib(10)一共调用了多少次fib()函数

时间:2017-07-23 18:17:40      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:函数   else   blog   style   code   logs   count   span   计算   

定义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的一道面试题

递归求解斐波那契fib(10)一共调用了多少次fib()函数

标签:函数   else   blog   style   code   logs   count   span   计算   

原文地址:http://www.cnblogs.com/OliverZhang/p/7225120.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!