[英]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.