在递归中,方法调用自身。当有返回值时,我不关注它。例如,在 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传递的方法。, 因此和.2num = 22 * factorial(2-1)2*1=2
6我们从第一次运行代码中得到的结果会怎样?现在num = 1,看起来这将返回1并转到代码的末尾。但据我了解,我们仍然有6和2从以前的递归。我在这个假设中是否正确,因为当我们乘以时我们调用了阶乘函数num?有人可以帮助我更好地理解这一点吗?假设我们打电话factorial(10),这将如何解决?