我正在编写一个返回斐波那契数列中第 n 个元素的方法,但遇到了意外的结束错误。
def fib_seq(n)
a = [0]
n.times do |i|
if i==0
a[i] = 0
else if i==1
a[i] = 1
else
a[i] = a[i-1] + a[i-2]
end
end
return a[n]
end
puts fib_seq(4)
关于我可能搞砸了什么的任何提示?
最佳答案
假设您正在尝试返回第 n 个(而不是第 (n-1) 个,即 fib(1) = 0 NOT fib(0) = 0)。
我通过更改修复了它:
else if i==1
到
elsif i==1
(与)
return a[n]
到
return a[n - 1]
所以你的最终代码应该是这样的:
def fibSeq(n)
a = [0]
n.times do |i|
if i==0
a[i] = 0
elsif i==1
a[i] = 1
else
a[i] = a[i-1] + a[i-2]
end
end
return a[n-1]
end
puts fibSeq(4)
根据您在下方的评论,以下代码将起作用:
def fibSeq(n)
a = [0]
(n+1).times do |i|
if i==0
a[i] = 0
elsif i==1
a[i] = 1
else
a[i] = a[i-1] + a[i-2]
end
end
return a[n]
end
puts fibSeq(4)
如果您想将 fibs 作为列表输出,请使用:
return a[0..n]
代替
return a[n]
关于ruby - 我的第一个 ruby 应用程序——斐波那契数列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12504530/