ruby - 我的第一个 ruby​​ 应用程序——斐波那契数列

标签 ruby

我正在编写一个返回斐波那契数列中第 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/

相关文章:

mysql - 在 Ruby 中运行任意 SQL 查询

ruby - Ruby 中的方法必须始终位于类内部吗?

ruby - ChefDK - WinRM 在提供域凭据时切换到基本身份验证。

ruby - 我可以将我的 README.textile 以正确的格式放入我的 RDoc 中吗?

ruby - 续集迁移器未定义

ruby-on-rails - 安装pg(0.19.0)时出错,Bundler无法继续

sql - rails : Custom function in where block

ruby - 为什么 NameError 在第二个(不是第一个)位置的祖先中有 NameError?

Ruby:使用正则表达式和 bool 运算符的 if 语句

mysql - Activerecord:将 ruby​​ 方法转移到 sql-land