有没有人能帮我解释一下为什么下面的代码运行得很好?
作品:
def factorial(n)
return 1 if n == 1
n * factorial(n-1)
end
puts factorial(5)但是当我像这样重构它时,它抛出了一个异常:
*
':不能将nil强制转换为整数(TypeError)
失败:
def factorial(n)
puts n
n * factorial(n-1) unless n == 1
end
factorial(5)作为另一个示例,此代码运行良好,并且以类似的方式编写:
作品:
def count_down(number)
puts number
count_down(number - 1) unless number == 0
end
count_down(10)发布于 2021-03-02 07:19:37
这段代码运行良好,并且以类似的方式编写
不,不是。你的
一点也不相似,因为它不返回值。
但是你的
返回一个值,每次递归调用都使用该值。
那么,您的第二个示例并没有说明在以下情况下应该返回什么
为1,因此它返回
调用堆栈就崩溃了。
您的第一个示例说明了在执行以下操作时返回的内容
是1。这就是不同之处。
https://stackoverflow.com/questions/66430897
复制相似问题