Посчитать количество рекурсий в программе - C (СИ)
Формулировка задачи:
Всем привет, помогите посчитать количество рекурсий в программе.
#include <stdio.h> #include <locale.h> #include <ctime> unsigned long long Fib(unsigned long long N) { if (N<=1) return (N); else return Fib(N-1)+Fib(N-2); } int main () { setlocale(LC_ALL, "Rus"); unsigned long long N; printf ("Введите число N"); scanf("%d",&N); for(int i;i<=N;i++) printf ("%d\n",Fib(i)); printf("runtime=%d\n",clock()/1000); }
Решение задачи: «Посчитать количество рекурсий в программе»
textual
Листинг программы
unsigned count = 0; unsigned long long Fib(unsigned long long N) { if(N <= 1) return N; else{ ++count; return Fib(N-1)+Fib(N-2); } } int main(void) { printf("Fib: %d\n", Fib(21)); printf("Count Fib: %d\n", count); return 0; }
Объяснение кода листинга программы
- Объявлена переменная
count
типаunsigned
для подсчета количества рекурсий. - Объявлена функция
Fib
типаunsigned long long
, которая принимает целочисленный аргументN
. - В функции
Fib
проверка: еслиN
меньше или равно 1, то возвращаетсяN
(базовый случай). - В функции
Fib
если базовый случай не наступил, то происходит инкремент переменнойcount
и вызывается рекурсивный вызов функцииFib
с аргументамиN-1
иN-2
. - В функции
Fib
возвращается сумма результатов рекурсивных вызовов функцииFib
с аргументамиN-1
иN-2
. - В функции
main
вызывается функцияFib
с аргументом21
. - В функции
main
выводится значение переменнойcount
, которая содержит количество рекурсий. - В функции
main
выводится значение функцииFib
с аргументом21
. - В функции
main
возвращается 0, что означает успешный конец работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д