繁体   English   中英

递归 function 调用在幕后工作

[英]Recursive function calls working behind the scenes

所以我不能围绕递归 function 调用特别是在这个例子中:

int Addup(int n)
{
    //6
    if(n <= 1)
        return 1;
    else 
        return n + Addup(n - 1);
    /*
    6 + 5 + 4 + 3 + 2 + 1
    */
}

现在,例如,如果我们做了Addup(6) ,它将如何工作,程序在运行时会做什么? 它会在 n 之后将所有评估链接起来,然后将它们加在一起。 我真的无法想象它。

如果有人可以有一种简单的方法来演示运行时实际发生的事情,那就太好了。

提前致谢。

理解递归的秘诀在于递归函数的工作方式与非递归函数完全一样。

您的函数的工作方式与这些完全一样:

int Addup_1(int n)
{
    return 1;
}

int Addup_2(int n)
{
    if(n <= 1)
        return 1;
    else 
        return n + Addup_1(n - 1);
}

int Addup_3(int n)
{
    if(n <= 1)
        return 1;
    else 
        return n + Addup_2(n - 1);
}

int Addup_4(int n)
{
    if(n <= 1)
        return 1;
    else 
        return n + Addup_3(n - 1);
}

int Addup_5(int n)
{
    if(n <= 1)
        return 1;
    else 
        return n + Addup_4(n - 1);
}

int Addup_6(int n)
{
    if(n <= 1)
        return 1;
    else 
        return n + Addup_5(n - 1);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM