Посчитать количество рекурсий в программе - 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, что означает успешный конец работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д