zoukankan      html  css  js  c++  java
  • 4.斐波那契数列[尾递归]

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

    #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

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

  • 相关阅读:
    Vasya and Endless Credits CodeForces
    Dreamoon and Strings CodeForces
    Online Meeting CodeForces
    数塔取数 基础dp
    1001 数组中和等于K的数对 1090 3个数和为0
    1091 线段的重叠
    51nod 最小周长
    走格子 51nod
    1289 大鱼吃小鱼
    POJ 1979 Red and Black
  • 原文地址:https://www.cnblogs.com/tinaluo/p/5267739.html
Copyright © 2011-2022 走看看