我试图找到这个 collatz 序列的长度。如果我改变 test_array << number
至 puts number
,我能够输出序列中的每个数字,但由于某种原因,我无法让这个函数在将新值返回到函数之前将数字插入数组。任何帮助将不胜感激。
test_array = []
def collatz_sequence(number)
return number if number==1
if number%2==0
test_array << number
return collatz_sequence(number/2)
else
test_array << number
return collatz_sequence(3*number+1)
end
end
puts collatz_sequence(13)
最佳答案
test_array = []
超出范围。 def
创建一个新范围,因此您无法从该方法中访问 test_array
的值。
解决此问题的一种方法是使 test_array
成为实例变量:@test_array
关于ruby - 为什么我不能将函数参数压入数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18041554/