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

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

  • 相关阅读:
    作用域链及作用域面试题
    this在js中的作用
    dom对象
    作用域问题
    逻辑运算
    socket.io 的使用
    mongoDB 的使用
    使用 usb 调试的时候,连接上电脑没反应
    uni-app 的更新及碰到的问题
    WebSocket 的使用
  • 原文地址:https://www.cnblogs.com/tinaluo/p/5267739.html
Copyright © 2011-2022 走看看