Fibonacci序列Ruby

问题描述 投票:-3回答:1

我在Ruby上编码了斐波那契序列:

n=40
def fibonacci (n)
    if n == 1
        1
    elsif n == 2
        1
    else
        fibonacci(n-1) + fibonacci(n-2)
    end
end
puts "#{n}'s fibonacci value is #{fibonacci(n)}"

我需要添加什么代码才能让用户选择他们要查找的序列部分,例如:n = 35?我正在使用MAC终端进行测试

ruby sequence fibonacci
1个回答
1
投票

Ruby可以以各种形式从用户那里获取输入,但最简单的是通过ARGV,它封装了命令行参数。

首先,让我们使用Ruby灵活的case语句清理实现:

def fibonacci(n)
  case (n)
  when 1,2
    1
  else
      fibonacci(n-1) + fibonacci(n-2)
  end
end

然后将命令行参数的输入提供给函数。请注意,命令行输入始终是字符串,因此需要使用qazxsw poi将它们转换为整数:

.to_i

然后你这样称呼它:

n = ARGV[0].to_i
puts "#{n}'s fibonacci value is #{fibonacci(n)}"
© www.soinside.com 2019 - 2024. All rights reserved.