我很好奇使用递归函数时 return 是如何工作的。例如,在下面的阶乘函数中,x 将在实际发生任何计算之前达到 1。
int factorial (int x){
if (x==1){
return 1;
}else{
return x * factorial(x - 1);
}
}
假设x = 3
。按照逻辑,它似乎应该循环 3 次并返回 1:
3 != 1
- 所以其他:
3 * factorial (2)
。 - 是什么
factorial (2)
? - 回到顶部:
2 != 1
- 所以其他:
2 * factorial (1)
。 - 是什么
factorial (1)
? - 返回顶部:
1 == 1
, - 所以:
return 1
。
但是,当然它实际上会返回 6。那么它究竟是如何工作的呢?