请考虑递归函数:
1) int calc(int num)
{
2) sum=sum+num;//sum is a global variable
3) num--;
4) if(num==0)
5) return sum;
6) calc(num);
}
它计算一个整数的和。我的老师告诉我这不是递归,而是一个简单的函数调用,因为您需要
num--
作为参数传递并返回calc(num--)
。
我很震惊,因为当函数调用自身时我只知道一件事,它的递归。
她也给出了原因,那行不行。2
并3
额外存储在堆栈内存中。我不知道她指的是什么。所以在通过堆栈存储之后:
在这里,我注意到传递的函数参数是以递归方式传递的,就像n--
在我的function
. 让他们可以联系到下一个function call
。
为了这个缘故,我们可以把它称为简单function call
的而不是recursion
?