1

フィボナッチ法から値を取得して配列に連結しようとしています。ただし、ループからすべての値を配列に割り当てるのではなく、最後の値のみを返します。これを回避する方法はありますか?ありがとうございました。


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(最大)

i1、i2 = 1、1

i2 <= 最大の間

i1, i2 = i2, i1+i2

終わり

i1

終わり

a = [fib_up_to(1000)]

ありがとう

于 2012-05-08T14:23:51.297 に答える