我正在尝试从Fibonacci方法中捕获值并将其连接到数组。但是,不是将循环中的每个值赋给数组,而是仅返回最后一个值。有没有办法解决?谢谢。
def fib_up_to(max)
i1, i2 = 1, 1
while i1 <= max
yield i1
i1, i2 = i2, i1+i2
end
end
def capture_arr(val)
$a = []
$a << val
end
fib_up_to(1000) do |f|
capture_arr(f)
end
p $a # => [987]
答案 0 :(得分:8)
在capture_arr
中,您在每次调用时将数组重置为空,然后再向其中添加元素。试试这个:
def capture_arr(val)
$a ||= []
$a << val
end
答案 1 :(得分:0)
你必须尝试这个
def fib_up_to(max)
i1,i2 = 1,1
而i2&lt; = max
i1, i2 = i2, i1+i2
端
I1
端
a = [fib_up_to(1000)]
p a
感谢的