首页 > 其他 > 详细

4.斐波那契数列[尾递归]

时间:2016-03-12 01:22:59      阅读:299      评论:0      收藏:0      [点我收藏+]

/*网络摘录加工*/
尾部递归是一种编程技巧。递归函数是指一些会在函数内调用自己的函数,如果在递归函数中,递归调用返回的结果总被直接返回,则称为尾部递归。尾部递归的函数有助将算法转化成函数编程语言,而且从编译器角度来说,亦容易优化成为普通循环。这是因为从电脑的基本面来说,所有的循环都是利用重复移跳到代码的开头来实现的。如果有尾部归递,就只需要叠套一个堆栈,因为电脑只需要将函数的参数改变再重新调用一次。利用尾部递归最主要的目的是要优化。

#include "stdio.h"
#include "math.h"
int f(int n,int A,int B)
{
    if (n < 2)
    {
        return A;
    }
    else
    {
        return f(n-1,B,A+B);
    }
}
int main(void)
{
    int n, rs;
    scanf("%d",&n);
    rs = f(n, 1, 1);
    printf("%d ", rs);
    return 0;
}
请输入斐波那契数n:10
factorial_tail(9, 1, 2)
factorial_tail(8, 2, 3)
factorial_tail(7, 3, 5)
factorial_tail(6, 5, 8)
factorial_tail(5, 8, 13)
factorial_tail(4, 13, 21)
factorial_tail(3, 21, 34)
factorial_tail(2, 34, 55)
factorial_tail(1, 55, 89)
55

根据观察,尾递归可以简易的理解为,在函数调用时,参数已经过计算,然后和形参结合。尾递归的本质是:将单次计算的结果缓存起来,传递给下次调用,相当于自动累积。

4.斐波那契数列[尾递归]

原文:http://www.cnblogs.com/tinaluo/p/5267739.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!