我已經寫了這段代碼對我來說很有意義,但不管怎樣,它似乎都不起作用。這是我有:Ruby打印Fibonacci序列(迭代)
def fib(places)
a = 0
b = 1
while a < places do
puts a + "\n"
a = b
b = a + b
end
end
puts fib(1000)
我已經寫了這段代碼對我來說很有意義,但不管怎樣,它似乎都不起作用。這是我有:Ruby打印Fibonacci序列(迭代)
def fib(places)
a = 0
b = 1
while a < places do
puts a + "\n"
a = b
b = a + b
end
end
puts fib(1000)
def fib(num)
i, j = 0, 1
while i <= num
puts i
i, j = j, i + j
end
end
或者
def fibonacci(n)
return n if (0..1).include? n
(fibonacci(n - 1) + fibonacci(n - 2))
end
puts fibonacci(5)
# => 5
這可能有助於
def fibonacci(n)
return n if n <= 1
fibonacci(n - 1) + fibonacci(n - 2)
end
puts fibonacci(10)
# => 55
:無給定的塊(yield)(LocalJumpError) – steenslag
ahh好的我修復了它 – user126885
我假設你的地方PARM用於放置在一個極限顯示最大斐波那契數值。
我得到了良好的結果:
def fib(places)
a = 0
b = 1
while b < places do
puts b
a,b = b,a+b
end
end
fib(1000)
墓內:
1
1
2
3
5
8
13
21
34
55
89
144
233
377
610
987
2個問題:
a + "\n"
:a
是一個數字,"\n"
是一個字符串。您無法先添加它們,而無需先轉換。 1 + "2"
應該是12
還是3
?你需要爲Ruby明確。使用puts "#{a}\n"
或者只是puts a
a = b
其次b = a + b
基本上只是b = 2*b
,這是不是你想要的。
通知你不需要這種'把一個+「\ n」',「事業卻將已經打印給定的值後改變線路。如果您正在使用'print a',那麼您需要強制更改行。 –
當詢問你寫的哪些代碼不能正常工作時,有必要詳細描述什麼不起作用(即引用任何錯誤,描述錯誤的行爲......),並將其與你期望的代碼進行比較確實。請查看[如何創建一個最小,完整和可驗證的示例](http://stackoverflow.com/help/mcve),以獲取有關如何提出一個很好的問題的指導,這些問題將幫助您解決問題問題,並免除浪費時間猜測可能存在的問題。 'fib'中的 –