Advertisement

斐波那契数列(兔子总数)是典型的递归示例

阅读量:

持续加强理解和应用能力。由于自己在递归方面的掌握还不够熟练,在尝试解决POJ1753问题时遇到了较多的困难——需要通过翻棋子直到棋盘上所有棋子的颜色一致为止才能完成任务,并计算最少需要翻转多少次棋子。随后决定先练习另一道递归问题(如从数组中选取n个元素的组合),但在实际操作中依然感到有些不适应——需要通过枚举法来实现求解过程。为了更好地掌握相关知识,在复习CPP教材第229页时回顾了斐波那契数列的相关内容,并联想到之前完成的一道编程题——发现可以通过递归的方法来优化算法效率并改进代码设计思路。

以下这段摘自《C primer plus》
斐波那契数列描述如下:第一项和第二项均为1,在此之后每一项均为其前两项之和。例如该数列前几项依次为1、1、2、3、5、8及13等。…本节我们将编写一个函数该函数要求输入一个正整数n并输出相应的斐波那契数值。
在讨论递归深度时我们指出递归方法提供了一个简洁的说明:若被调用者Fibonacci()在n等于1或2时将返回值1;而对于其他数值则将返回Fibonacci(n-1)+Fibonacci(n-2)的结果;

复制代码
    long Fibonacci(n)
    {
    if (n > 2)
        return Fibonacci(n-1)+Fibonacci(n-2);
    else
        return

全部评论 (0)

还没有任何评论哟~