Последовательность Фибоначчи Ruby

#ruby #sequence #fibonacci

#ruby #последовательность #фибоначчи

Вопрос:

Я закодировал последовательность Фибоначчи на 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 для тестирования

Комментарии:

1. Похоже на домашнее задание, пожалуйста, покажите, что вы уже пробовали.

2. SyOps, размещение вопросов о домашнем задании (если это одно из них) совершенно нормально, но существует правило SO, согласно которому при этом спрашивающий должен описать усилия (не обязательно код), которые он / она приложил для ответа на вопрос.

3. Просто напишите fibonacci(35) , что возвращает 9227465 . Так обычно пишется fibonacci(35) #=> 9227465 . Следовательно, n=35; puts "#{n}'s fibonacci value is #{fibonacci(n)}" отображает, "fibonacci value is 922746" .

4. MAC означает очень специфическую вещь, и это не тип компьютера. Это просто «Mac».

Ответ №1:

Ruby может принимать входные данные от пользователя в различных формах, но самая простая — через ARGV , которая инкапсулирует аргументы командной строки.

Сначала давайте очистим реализацию, используя гибкую case инструкцию Ruby:

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

Затем передайте входные данные из аргумента командной строки в функцию. Обратите внимание, что вводимые в командной строке данные всегда являются строками, поэтому их необходимо преобразовать в целые числа с помощью .to_i :

 n = ARGV[0].to_i
puts "#{n}'s fibonacci value is #{fibonacci(n)}"
  

И затем вы называете это так:

 ruby fib.rb 35
# => 35's fibonacci value is 9227465