Подсчитать количество вызовов рекурсии - C (СИ)

Узнай цену своей работы

Формулировка задачи:

нужно цикл for сделать через рекурсию и подсчитать количество вызовов рекурсии
#include<stdio.h>

int root(int a)
{
    int s = 0;
    while(a > 0)
    {
        s += a % 10;
        a /= 10;
    }
    if(s > 9) return root(s);
    else return s;
}
 
 int main(){
    int m=10, n=0;
    char snum[100];
while(1) {
    printf("Enter a number: ");
    gets(snum);
    int num = 0;
    char *temp;
    for (temp = snum; *temp != '\0'; temp++)
    {
        if (*temp > 47 && *temp < 58)
        {
            n += ((int)*temp) - 48;
        }
        else
        {
            printf("Wrong input!!!\n");
            break;
        }
    }
    if (*temp =='\0') break;
}
    printf("%d", root(n));
 
    return 0;
}

Решение задачи: «Подсчитать количество вызовов рекурсии»

textual
Листинг программы
int main(int argc, char ** argv) {
    if ( *(argv[1]) ) {
        argc = *(argv[1]) - '0';
        argv[1]++;
        return argc + main(argc, argv);
    }
    else
        return 0;
}

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

В этом коде выполняется подсчет количества вызовов функции main. Список элементов, описывающих выполнение кода, выглядит следующим образом:

  1. Входные данные: argc (количество аргументов, переданных функции main) и argv (указатель на массив аргументов, переданных функции main).
  2. Проверка наличия первого аргумента (*(argv[1])). Если он есть, то выполняется следующее действие.
  3. Переменная argc изменяется на значение первого аргумента (*(argv[1]) - '0').
  4. Указатель argv[1] увеличивается на 1.
  5. Вызывается рекурсивно функция main с аргументами argc и argv.
  6. Если первого аргумента нет (или он не является числом), то выполняется действие в блоке else.
  7. В этом блоке возвращается 0, что означает успешный конец работы программы.
  8. Если первый аргумент есть и он является числом, то возвращается сумма значения argc и результата вызова функции main (рекурсивный вызов). В результате выполнения этого кода будет подсчитано и выведено количество вызовов функции main.

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


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

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

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