gpt4 book ai didi

ruby - 使用 Ruby 的阶乘

转载 作者:太空宇宙 更新时间:2023-11-03 17:20:21 32 4
gpt4 key购买 nike

我是 Ruby 的新手,我正在尝试创建一个返回数字阶乘的方法。我脑子里有逻辑,我知道它是如何工作的,但是,我遗漏了一些东西,所以它可以在 Ruby 中工作。运行我的代码时:

def factorial(num)
n = num
if n == 0
1
end
n * factorial(num - 1)
end

我不断收到此错误:堆栈级别太深
来自:( pry ):327:在`阶乘'

我在之前的线程中读过一些关于它的内容,我知道这与我没有区分方法的参数和变量 n/num 有关。我一直无法弄清楚如何解决它以及为什么我的解决方案在将 num 的值分配给新变量 n 时不起作用。

最佳答案

def factorial(num)
n = num
if n == 0
1
else # ⇐ HERE
n * factorial(num - 1)
end
end

您遇到的问题是 n * factorial(num - 1) (递归调用)仍然执行 even 对于非正 n.

我相信,所谓的“提前返回”会让这段代码更具可读性:

def factorial(num)
return 1 unless num > 0
num * factorial(num - 1)
end

请注意,您实际上不需要额外的变量 nnum 可以完美工作。

关于ruby - 使用 Ruby 的阶乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48100533/

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