这是一个获取数字的数字总和的函数:
int sumOfDigits(int n)
{
int sum=0; //line 1
if(n==0)
return sum;
else
{
sum=(n%10)+sumOfDigits(n/10); //line 2
// return sum; //line 3
}
}
在编写此代码时,我意识到局部变量的范围对于函数的每个单独递归都是局部的。那么我是否正确地说 if每次递归都会创建n=11111
5 个sum
变量并将其推送到堆栈上?如果这是正确的,那么当我可以使用循环在正常功能中执行递归时,使用递归有什么好处,从而只覆盖一个内存位置?如果我使用指针,递归可能会像普通函数一样占用类似的内存。
现在我的第二个问题,即使这个函数每次都给我正确的结果,我看不出递归(除了返回 0 的最后一个)如何在不取消注释第 3 行的情况下返回值。(使用 geany 和 gcc)
我是编程新手,如有错误请见谅