【发布时间】:2016-11-02 23:36:19
【问题描述】:
我正在使用 Ruby 处理 Collatz Conjecture,并在 n = 1 处停止。 这是我到目前为止的代码:
def collatz(n)
arr = []
if n == 1
arr << n
return arr
elsif n % 2 == 0
n = n / 2
arr << n
collatz(n)
else
n = (3 * n) + 1
arr << n
collatz(n)
end
end
我希望代码在整个循环中返回一个包含所有 n 值的数组。
例如,如果我做collatz(10),我希望它显示[5,16,8,4,2,1]
现在它为任何输入值显示[1]。这是因为在第一个循环之后,它调用 collatz(n),并且第一行显示arr= [],从而在每个循环中重置我的数组。
如何在追加数组的同时继续方法循环?
【问题讨论】: