• 【基础】函数的递归调用


    递归含义:递归是一种计算过程,如果其中每一步都要用到前一步或前几步的结果,称为递归的。

    我们可以通过递归把使函数更接近于解

    递归的过程可以分为两个阶段:

    第一阶段是递推,把一个问题分解为若干个子问题,由未知逐渐接近已知,最后到达可以求解的终点

    分解问题的操作称为递推步,最后的可以求解的称为递归基

    第二阶段是回归,由已知最后的已知,一步步向上回归,回到初始点

    /*
    *摘 要:以阶乘为例演示函数的递归调用(头递归)
    *作 者:水汐音
    *完成日期:2018年2月22日
    */
    
    #include <iostream>
    using namespace std;
    
    
    int Factorial(int a);
    
    int main() {
        int a,f;
        cin >> a;
    
        f = Factorial(a);
        cout << f << endl;
    
        return 0;
    }
    
    int Factorial(int a){
        int f;//储存阶乘结果
        if (a==0){
            f = 1;
        }
        else {
            f = a * Factorial(a - 1);
        }
    
        return f;
    }

    以输入 4 为例,我们来看下计算 4! 的过程

    (右键保存在本地放大看,图片没有被压)

     当 a=0 时,我们获得了可以解决当前最小问题的值,通过回归,一步步往回计算得到我们原本问题的值

    这种递归方式也称为头递归

    与之相对的,还有一种递归方式——尾递归

    /*
    *摘 要:以阶乘为例演示函数的递归调用(尾递归)
    *作 者:水汐音
    *完成日期:2018年2月24日
    */
    
    #include <iostream>
    using namespace std;
    
    
    int Factorial(int n,int product);
    
    int main() {
        int n,product,f;
        cin >> n >> product;
    
        f = Factorial(n,product);
        cout << f << endl;
    
        return 0;
    }
    
    int Factorial(int n, int product) {
        if (n == 0) {
            return product;
        }
        product = product * n;
        return Factorial(n - 1, product);
    }

    输入  n = 4, product = 1 来计算 4! 

    头递归与尾递归的比较(点击进入) 

  • 相关阅读:
    史上最刁钻的十道英语面试题
    99%的人连Where are you from都不会回答?
    库存管理与订单的控制
    订单处理逻辑
    配送规划
    多商家电子商务解决方案
    电商库存规划
    库存管理从入门到精通
    商家报名系统
    经销商管理
  • 原文地址:https://www.cnblogs.com/syxy/p/8461247.html
Copyright © 2020-2023  润新知