Определите, каким по счету числом Фибоначчи является заданное число - C (СИ)
Формулировка задачи:
Дано натуральное число A. Определите, каким по счету числом Фибоначчи оно является, то есть выведите такое число n, что n=A. Если А не является числом Фибоначчи, выведите число -1.
Решение задачи: «Определите, каким по счету числом Фибоначчи является заданное число»
textual
Листинг программы
#include <stdio.h> #include <math.h> int main() { int f1,f2,t,fib,nom,flag; f1=0; f2=1; nom=1; flag=0; scanf("\n%d", &fib); while (flag!=1) { t=f1+f2; f1=f2; f2=t; nom+=1; if (f2==fib) { printf("\n%d", nom); flag=1; } else if (f2>fib) { printf("-1\n"); flag=1; } }; }
Объяснение кода листинга программы
В этом коде задача сводится к определению, является ли заданное число (fib) числом Фибоначчи. Числа Фибоначчи определяются следующим образом:
- Первые два числа равны 0 и 1.
- Каждое последующее число равно сумме двух предыдущих. Вот список элементов кода с соответствующими номерами:
- Объявление переменных:
- f1, f2, t, fib, nom, flag (строки 6-7)
- Инициализация переменных:
- f1 = 0, f2 = 1, nom = 1, flag = 0 (строки 8-11)
- Ввод заданного числа (fib) с помощью функции scanf (строка 14)
- Начало цикла while, который продолжается до тех пор, пока не будет найдено число Фибоначчи, равное заданному числу (fib)
- Внутри цикла находятся счетные переменные t, f1 и f2, которые используются для вычисления следующего числа Фибоначчи (строки 16-18)
- Переменная nom увеличивается на 1 на каждой итерации цикла, чтобы отслеживать номер числа Фибоначчи (строка 17)
- Если f2 равно заданному числу (fib), то число Фибоначчи и его порядковый номер выводятся на экран (строки 20-22)
- Если f2 больше заданного числа (fib), то выводится сообщение
-1
и флаг устанавливается в 1, чтобы прервать цикл (строки 23-25)
- Конец цикла while (строка 15) Следует отметить, что этот код предполагает, что пользователь вводит действительное целое число. Если пользователь вводит некорректные данные, код может не работать должным образом.