1

我正在尝试从 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]

4

2 回答 2

8

capture_arr中,您在每次调用时将数组重置为空,然后再向其中添加元素。试试这个:

def capture_arr(val)
  $a ||= []
  $a << val
end
于 2012-05-08T13:58:16.627 回答
0

你必须试试这个

def fib_up_to(max)

i1, i2 = 1, 1

而 i2 <= 最大值

i1, i2 = i2, i1+i2

结尾

i1

结尾

a = [fib_up_to(1000)]

谢谢

于 2012-05-08T14:23:51.297 回答