我无法绕过这个.
当第4行看起来相同时
,为什么这两个函数会产生截然不同的结果
呢?
版本I
int factorial(int val) // input=5; output=120
{
if (val != 0)
return factorial(val - 1) * val;
return 1;
}
Run Code Online (Sandbox Code Playgroud)
版本II
int factorial(int val) // input=5; output=0
{
if (val != 0)
return factorial(--val) * val;
return 1;
}
Run Code Online (Sandbox Code Playgroud)
如果你不读它们,它们似乎只是相同 - 一个说val - 1,另一个说--val.
val - 1:减法.评估val减去1 的值--val:减少.减val1,并计算新值后一个示例具有未定义的行为,因为您尝试val在同一行上再次读取.
| 归档时间: |
|
| 查看次数: |
73 次 |
| 最近记录: |