Посчитать количество рекурсий в программе - 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;
}

Объяснение кода листинга программы

  1. Объявлена переменная count типа unsigned для подсчета количества рекурсий.
  2. Объявлена функция Fib типа unsigned long long, которая принимает целочисленный аргумент N.
  3. В функции Fib проверка: если N меньше или равно 1, то возвращается N (базовый случай).
  4. В функции Fib если базовый случай не наступил, то происходит инкремент переменной count и вызывается рекурсивный вызов функции Fib с аргументами N-1 и N-2.
  5. В функции Fib возвращается сумма результатов рекурсивных вызовов функции Fib с аргументами N-1 и N-2.
  6. В функции main вызывается функция Fib с аргументом 21.
  7. В функции main выводится значение переменной count, которая содержит количество рекурсий.
  8. В функции main выводится значение функции Fib с аргументом 21.
  9. В функции main возвращается 0, что означает успешный конец работы программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.133 из 5
Похожие ответы