例如,我有一个计算 n! 的递归函数。
int fact(int n){
if(n==1)
return 1;
return n*fact(n-1);
}
我的问题是为什么我不能用 n-- 替换 n-1?或者我可以用 --n 替换它吗?
最佳答案
有两个原因。
One,n--
是后递减。用作参数的值将是 n
的原始(未递减)值。
Two, n
在表达式中使用了两次(一次作为 *
的左侧参数,一次在递归调用的参数内)。在这种情况下,C 和 C++ 都没有指定求值顺序,因此不清楚 n
是在 n--
之前还是之后求值(甚至是 --n
)。
关于c - 函数调用的误区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51132026/