2014-02-17 39 views
0
a = 1; b = 2 
fibonacci = [] 
while fibonacci.length < 100 
    fibonacci.push(a) 
    fibonacci.push(b) 
    a = a + b; b = a + b 
end 

push fibonacci 

的錯誤消息是「未定義的方法`推」主:目標文件」這個算法爲什麼不產生100以下的斐波納契序列?

+1

您正試圖在最後一行#推動陣列本身! :) - 這就是它的抱怨 - 該方法正在'主'對象上被調用...我猜你的意思是'puts' –

+0

謝謝!愚蠢的錯誤,應該說「放」@約瑟夫魏斯曼 – megashigger

回答

1

你試圖#push最後一行數組本身! :)

這就是它的抱怨。 push方法正在'main'對象上調用,並且push不是Kernel方法。我想你的意思是puts。否則它看起來沒問題,如果有點不習慣。當然,你可以找到很多對可能讀一位更清晰的網站在這個問題上的Ruby解決方案(見here for a recursive one。)

1

正如其他人所說前的最後一行應該是「放」 還有你的數字是錯誤的。

a = 1; b = 1 
fibonacci = [] 
while fibonacci.length < 100 
    fibonacci << a 
    fibonacci << b 
    a += b 
    b += a 
end 

puts fibonacci 

而且還有FIB開始於1與第二元件也爲1 這使你序列關閉,如果啓動在1,2

蛋白原= 1,1,2,3 ,5,8,...

+0

有些人認爲0和1(而不是1和1)是起始數字,例如見[斯隆](http://oeis.org/A000045)(這只是爲了提供信息,我不想挑剔或其他任何東西)。 –

+0

你是對的,在系統中,它是在0,1,1,..但總的來說,它是1,1,但從來沒有1,2 – sonnyhe2002