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

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

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

нужно цикл for сделать через рекурсию и подсчитать количество вызовов рекурсии
Листинг программы
  1. #include<stdio.h>
  2.  
  3. int root(int a)
  4. {
  5. int s = 0;
  6. while(a > 0)
  7. {
  8. s += a % 10;
  9. a /= 10;
  10. }
  11. if(s > 9) return root(s);
  12. else return s;
  13. }
  14. int main(){
  15. int m=10, n=0;
  16. char snum[100];
  17. while(1) {
  18. printf("Enter a number: ");
  19. gets(snum);
  20. int num = 0;
  21. char *temp;
  22. for (temp = snum; *temp != '\0'; temp++)
  23. {
  24. if (*temp > 47 && *temp < 58)
  25. {
  26. n += ((int)*temp) - 48;
  27. }
  28. else
  29. {
  30. printf("Wrong input!!!\n");
  31. break;
  32. }
  33. }
  34. if (*temp =='\0') break;
  35. }
  36. printf("%d", root(n));
  37. return 0;
  38. }

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

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

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

В этом коде выполняется подсчет количества вызовов функции 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы