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