嗨,我已经在 Visual C++ 中实现了一个 C 代码,并在其中进行了一些修改以进行调试。这是代码
long long unsigned factorial(long long unsigned int * n) {
if (*n<=1) return 1;
else {
(*n)--;//This statement here .......
printf("calculating %d * factorial %d \n",*n,*n); -- used for debugging
return ((*n+1) * factorial(n));
}
}
最终输出(阶乘的值)按预期出现,但调试语句的输出让我感到惊讶。
calculating 4 * factorial 0
calculating 3 * factorial 0
calculating 2 * factorial 0
calculating 1 * factorial 0
120
每个调试语句中使用相同的值 *n 两次,它显示不同的值。在一个语句中使用两次相同的值怎么可能给出不同的结果。