我有一个关于返回函数本身值的简单问题。该函数当然是递归的。 例如:
int CountDigs(int n)
{
int dig=n%10;
if(n < 10) return 0;
if( (n/10)%10 > dig )
return CountDigs(n/10)+1;
return CountDigs(n/10);
}
我通常返回一个数字或一个变量,所以这是我第一次看到这个。有人可以解释一下“+1”的值存储在内存中的什么位置,为什么我不应该创建一个存储摘要的变量?
更具体地说,我对相同的解决方案感到愤怒,但有所不同:
int counting_function(int n)
{
int sum;
if (n>=9)
return 0;
sum = counting_function (n/10);
if (n%10 < n/10%10)
{
sum++;
return sum;
}
return sum;
}
最佳答案
当 return
语句返回一个值时,该值由表达式指定。该表达式可以是一个简单的表达式,例如常量或变量名,但不一定是。它可以是任何合适类型的有效表达式。
Someone can please explain where the value of "+1" stores at the memory,
这取决于编译器,但加 1 的结果可能不会存储在系统内存中。更有可能的是,它永远不会离开 CPU。
and why shouldn't I create a variable that stores the summary?
将结果存储在变量中,然后使用变量的名称作为 return
表达式,本质上并没有错。在某些情况下,这可能更清楚。然而,即便如此,该值也可能不会实际存储到系统内存中。但是,如果它 存储到系统内存中,那么这将比不存储更耗时。
这里要理解的关键是 return
语句指定一个 value 直接返回,而不是间接返回。在大多数情况下,对于大多数编译器,这样的返回值是通过 CPU 寄存器而不是系统内存传递给调用者的,尤其是您表示熟悉的情况。
关于c - 返回函数本身作为返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48624561/