Ввести число и определить, является ли оно числом Фибоначчи - C (СИ)
Формулировка задачи:
Доброго времени суток всем!
Необходима помощь в решении задачи:
Последовательность ряда Фибоначчи определяется следующим образом:
F0=0, F1 = 1, Fn=Fn-2+Fn-1.
N=2,3,4… Ввести число и определить, является ли оно числом Фибоначчи. Решение оформить с помощью рекурсивной функции.
Решение задачи: «Ввести число и определить, является ли оно числом Фибоначчи»
textual
Листинг программы
#include <stdio.h> char IsFibon_recursive(unsigned prev, unsigned cur, unsigned x) { if (x > prev) return IsFibon_recursive(cur, prev + cur, x); return x == prev; } char IsFibon(unsigned x) { return IsFibon_recursive(0, 1, x); } int main() { unsigned n; scanf("%u", &n); printf("%d", IsFibon(n)); }
Объяснение кода листинга программы
- Включаем заголовочный файл stdio.h для использования функций ввода-вывода
- Создаём две функции: IsFibon_recursive и IsFibon
- Функция IsFibon_recursive принимает три параметра: предыдущее число, текущее число и проверяемое число
- Если проверяемое число больше предыдущего, то функция вызывает саму себя, передавая текущее число как предыдущее, а предыдущее как сумму текущего и предыдущего чисел
- Если проверяемое число равно предыдущему, то функция возвращает 1
- Если проверяемое число меньше предыдущего, то функция вызывает функцию рекурсивно, передавая текущее число как предыдущее, а предыдущее как сумму текущего и предыдущего чисел
- Функция IsFibon является оберткой для функции IsFibon_recursive и принимает одно число
- В функции main считываем число с помощью функции scanf и выводим результат проверки числа с помощью функции IsFibon на экран
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д