gpt4 book ai didi

Ruby 递归问题

转载 作者:数据小太阳 更新时间:2023-10-29 07:05:48 25 4
gpt4 key购买 nike

我想知道为什么第一种阶乘方法在 ruby​​ 中不起作用(无限循环)而第二种方法却起作用。

def fac (x)
if x == 0
return 1
else
return (fac (x-1) * x)
end
end

def fact( num )
return 1 if num == 0

fact(num - 1) * num
end

最佳答案

区别在于方法名称后的空格,而不是您构造 if-else 的方式。

fac (x-1) * x 被解析为 fac((x-1) * x)。基本上,如果方法名称后跟一个空格(或任何不是左括号的标记),ruby 会假定您调用的方法不带括号。因此它将 x-1 周围的括号解释为分组,而不是方法调用语法的一部分。

关于Ruby 递归问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10764502/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com