Объяснить пример с рекурсией - C (СИ)

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

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

#include<stdio.h>
void gg(int a,int b)
{   int i=0;
    if(a==20) 
    return;
    printf("%d\n",a);
    printf("%d\n",b);
    gg(a+1,b-1);
    gg(a+1,b);
}
void main()
{
    gg(16,10);
 
}
Объясните пожалуйста что делает return ,когда if true что куда возвращается и что потом вызывается - я запутался до return все понятно - рекурсивный вызов gg(a+1,b-1); до тех пор пока a!=20 т.е. передаем функции gg: 16 и 10 - консоль выводит 17 и 9 ; 18 и 8; 19 и 7 а ДАЛЬШЕ что консоль выводит и почему столько много чисел я не понял объясните пожалуйста

Решение задачи: «Объяснить пример с рекурсией»

textual
Листинг программы
#include<stdio.h>
void gg(int a,int b)
{   
    int i=0;
    if(a<=20) 
    return;
    printf("%d\n",a);
    printf("%d\n",b);
    gg(a+1,b-1);
    gg(a+1,b);
}
void main()
{
    gg(16,10);
}

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

В этом коде используется рекурсия для вывода чисел от 1 до 20.

  1. В функции gg есть два параметра a и b, которые представляют собой начальные значения для итераций.
  2. Если a меньше или равно 20, функция завершается и ничего не делает.
  3. Если a больше 20, функция выводит значение a и значение b, а затем вызывает саму себя дважды, уменьшив значение b на 1 и увеличив значение a на 1. Это продолжается до тех пор, пока a не станет равным 20.
  4. В функции main вызывается функция gg с аргументами 16 и 10.
  5. Функция gg вызывает себя дважды, сначала с аргументами 16 и 9, затем с аргументами 16 и 10.
  6. Процесс продолжается, пока a не станет равным 20.
  7. Когда a становится равным 20, процесс завершается и программа выводит число 20. Список вызовов функции gg:
  8. gg(16,10)
  9. gg(16,9)
  10. gg(16,8)
  11. gg(16,7)
  12. gg(16,6)
  13. gg(16,5)
  14. gg(16,4)
  15. gg(16,3)
  16. gg(16,2)
  17. gg(16,1)
  18. gg(17,1)
  19. gg(17,2)
  20. gg(17,3)
  21. gg(17,4)
  22. gg(17,5)
  23. gg(17,6)
  24. gg(17,7)
  25. gg(17,8)
  26. gg(17,9)
  27. gg(17,10)

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


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

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

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