• 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

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

  • 相关阅读:
    axios拦截器
    Vue路由守卫
    HTML横向滚动条和文本超出显示三个小圆点
    Vue用户名vuex和localStorage双向存储
    javaScript Es6数组与对象的实例方法
    使用vue实现复选框单选多选
    正则表达式常用字符
    jest函数单元测试
    ts中的类
    ts中接口的用法
  • 原文地址:https://www.cnblogs.com/tinaluo/p/5267739.html
Copyright © 2020-2023  润新知