#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