Подсчитать количество вызовов рекурсии - 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. Список элементов, описывающих выполнение кода, выглядит следующим образом:
- Входные данные: argc (количество аргументов, переданных функции main) и argv (указатель на массив аргументов, переданных функции main).
- Проверка наличия первого аргумента (*(argv[1])). Если он есть, то выполняется следующее действие.
- Переменная argc изменяется на значение первого аргумента (*(argv[1]) - '0').
- Указатель argv[1] увеличивается на 1.
- Вызывается рекурсивно функция main с аргументами argc и argv.
- Если первого аргумента нет (или он не является числом), то выполняется действие в блоке else.
- В этом блоке возвращается 0, что означает успешный конец работы программы.
- Если первый аргумент есть и он является числом, то возвращается сумма значения argc и результата вызова функции main (рекурсивный вызов). В результате выполнения этого кода будет подсчитано и выведено количество вызовов функции main.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д