Найти количество сложений для вычисления n-го числа Фибоначчи рекурсивным и обычным алгоритмом. - C (СИ)
Формулировка задачи:
Найти количество сложений для вычисления n-го числа Фибоначчи рекурсивным и обычным алгоритмом.
Результаты выдать в виде таблицы.
Помогите плиз.
обычным могу сделать, а вот как рекурсивным не знаю
Обычный алгоритм:
#include<stdio.h> #include<math.h> #define n 11 int main() { static int fib[n]; int i,kol=0; fib[0]=1; fib[1]=1; for(i=0;i<n;i++) { fib[i+1]=fib[i-1]+fib[i]; if(i+2<n) { kol++; } } for(i=0;i<n;i++) { printf(" %d",fib[i]); } printf("\n"); printf("%d",kol); }
...
Решение задачи: «Найти количество сложений для вычисления n-го числа Фибоначчи рекурсивным и обычным алгоритмом.»
textual
Листинг программы
#include<stdio.h> #include<math.h> //cnt - глобальная переменная!!! int cnt=0; int fib(int n) { if((n==1)||(n==2)) return 1; else { ++cnt; return fib(n-1)+fib(n-2); } } int main() { int n=9; printf("Fibbonacci number #%d = %d\n", n, fib(n)); printf("Addition count = %d\n", cnt); return 0; }
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с файлами и математическими вычислениями.
- Объявление глобальной переменной
cnt
, которая будет использоваться для подсчета операций в рекурсивном алгоритме. - Рекурсивная функция
fib(int n)
, которая вычисляет n-ое число Фибоначчи. - Проверка базового случая: если n равно 1 или 2, функция возвращает 1.
- Увеличение счетчика операций
cnt
на 1. - Рекурсивный вызов функции
fib(n-1)
иfib(n-2)
для вычисления n-ого числа Фибоначчи. - В основной функции
main()
задается значение переменнойn
равное 9. - Вызывается функция
fib(n)
для вычисления 9-го числа Фибоначчи и сохранения результата в переменнуюresult
. - Выводится на экран значение
result
и количество операцийcnt
. - Программа возвращает 0, заканчивая свое выполнение.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д