在递归中,方法调用自身。当有返回值时,我不关注它。例如,在 Chris Pine 的“学习编程”一书中,有一个关于阶乘的示例。
def factorial num
if num < 0
return 'You cant\'t take the factorial of a negative number!'
end
if num <= 1
1
else
num * factorial(num-1)
end
end
如果我调用方法factorial(3)
,它将转到else
代码部分,如下所示:
3 * factorial(3-1)
并且应该6
从3*2=6
. factorial(3-1)
调用在递归中factorial
传递的方法。, 因此和.2
num = 2
2 * factorial(2-1)
2*1=2
6
我们从第一次运行代码中得到的结果会怎样?现在num = 1
,看起来这将返回1
并转到代码的末尾。但据我了解,我们仍然有6
和2
从以前的递归。我在这个假设中是否正确,因为当我们乘以时我们调用了阶乘函数num
?有人可以帮助我更好地理解这一点吗?假设我们打电话factorial(10)
,这将如何解决?