i−1
+F i−2
. Таким образом, ряд чисел Фибоначчи начинается так: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55. Напишите программу, которая считывает натуральное число N и выводит первые N чисел Фибоначчи с их номерами. Формат входных данных На вход программе подаётся натуральное число N. Формат выходных данных Выведите первые N чисел Фибоначчи и их номера, каждую пару на отдельной строке. Формат вывода: i => F_i=>F i
. Например, 8 => 21 Sample Input 1: 1 Sample Output 1: 1 => 1 Sample Input 2: 10 Sample Output 2: 1 => 1 2 => 1 3 => 2 4 => 3 5 => 5 6 => 8 7 => 13 8 => 21 9 => 34 10 => 55
x = int(input()) def fibonacci(n): if n in (1, 2): return 1 return fibonacci(n — 1) + fibonacci(n — 2) print(fibonacci(x))
но выводит только 1 число и без номера, как это реализовать?
Отслеживать
задан 9 мар 2021 в 16:24
21 1 1 серебряный знак 3 3 бронзовых знака
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Вот реализация вашего кода:
Производящая функция чисел Фибоначчи
x = int(input()) def fibonacci(n): if n in (1, 2): return 1 return fibonacci(n — 1) + fibonacci(n — 2) for i in range(1, x + 1): print(i, ‘=>’, fibonacci(i))
Но можно решить эту задачу и без рекурсии:
x = int(input()) a, b = 1, 1 for i in range(1, x + 1): print(i, ‘=>’, a) a, b = b, a + b
Отслеживать
ответ дан 7 авг 2021 в 0:17
362 1 1 серебряный знак 8 8 бронзовых знаков
print(x, «=>», fibonacci(x))
Отслеживать
ответ дан 9 мар 2021 в 16:28
48.7k 1 1 золотой знак 17 17 серебряных знаков 40 40 бронзовых знаков
да, поняла. а как сделать вывод всех строк до данного числа? (в задании есть пример с числом 10)
9 мар 2021 в 16:39
9 мар 2021 в 17:02
9 мар 2021 в 17:51
11 мар 2021 в 7:07
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Источник: ru.stackoverflow.com
Числа Фибоначчи
Вывести на экран ряд чисел Фибоначчи, состоящий из N элементов. Значение N вводится с клавиатуры.
Числа Фибоначчи – это элементы числовой последовательности 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, …, в которой каждое последующее число равно сумме двух предыдущих.
- n – количество элементов ряда;
- a , b – значения двух последних элементов ряда;
- c – буферная (запасная) переменная;
- i – счетчик.
Алгоритм решения задачи:
- Получить значение n .
- Присвоить a и b значения 0 и 1 соответственно (это первые числа ряда Фибоначчи). Вывести их на экран.
- Начиная с 3-го элемента до n ,
- выводить на экран сумму a и b ,
- временно сохранить значение b в переменной c ,
- записать в b сумму значений a и b ,
- присвоить a значение с .
Программа на языке Паскаль:
Числа Фибоначчи
var a, b, c, i, n: integer; begin write(‘n = ‘); readln(n); a := 0; write(a,’ ‘); b := 1; write(b,’ ‘); for i := 3 to n do begin write(a + b, ‘ ‘); c := b; b := a + b; a := c; end; writeln; end.
Примеры выполнения программы:
n = 10 0 1 1 2 3 5 8 13 21 34
n = 15 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377
Источник: pas1.ru
Числа Фибоначчи
Числа Фибоначчи — это значения числовой последовательности, в которой, первые два числа равны единице, а каждый последующий элемент равен сумме предыдущих двух чисел.
Последовательность Фибоначчи имеет вид:
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610…
Функционально последовательность можно записать как:
Программа рекурсивного вычисления и вывода N первых членов последовательности Фибоначчи
program FibonacciNumbers; var N, i, f : integer; function FibonacciNumber(number : integer) : integer; begin if (number = 0) or (number = 1) then FibonacciNumber := 1 else FibonacciNumber := FibonacciNumber(number — 1) + FibonacciNumber(number — 2); end; begin write(‘N = ‘); readln(N); writeln(N, ‘ первых числа Фибоначчи’); for i := 0 to N — 1 do begin f := FibonacciNumber(i); write(f); if i < N — 1 then write(‘, ‘); end; readln; end.
Поиск чисел Фибоначчи с помощью рекурсивных вызовов очень не эффективно. Дело в том, что для вычисления каждого элемента необходимо сначала вычислить значения двух предыдущих, а для каждого из них — двух предыдущих, и так далее. Получаем дерево рекурсивных вызовов. Для оптимизации алгоритма, достаточно запоминать два предыдущих элемента ряда Фибоначчи.
Оптимизированная программа поиска чисел Фибоначчи
program FibonacciNumbers; var N, i, f : integer; function FibNum(num : integer) : integer; var nm1 : integer; nm2 : integer; begin nm1 := 1; nm2 := 1; if (num = 0) or (num = 1) then FibNum := 1 else for i := 2 to num do begin FibNum := nm1 + nm2; nm2 := nm1; nm1 := FibNum; end; end; begin write(‘N = ‘); readln(N); writeln(N, ‘ первых членов последовательности Фибоначчи’); for i := 0 to N — 1 do begin f := FibNum(i); writeln(‘fib(‘, i:2,’) = ‘, f:8); end; readln; end.
Источник: programm.top