【基础】函数的递归调用

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

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

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

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

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

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

/*
*摘 要:以阶乘为例演示函数的递归调用(头递归)
*作 者:水汐音
*完成日期: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! 

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

原文地址:https://www.cnblogs.com/syxy/p/8461247.html