Как работает рекурсия? - C (СИ)

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

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

Здравствуйте! Темы указателей и рекурсии оказались очень сложными для самостоятельного изучения. Объясните, пожалуйста, с примерами:

1) как работает рекурсия, и почему функция не зацикливается?

2) как правильно работать с указателями, если их передавать в функцию? я пробовала сделать так:

Листинг программы
  1. mix(*parray_a, size_a, *parray_b, size_b, *parray_c, g, j, index);
  2. //нужно из массивов А[size_a] и Б[size_b] сделать массив С[size_a+size_b]
но так не работает, но не понимаю почему. но работает это:
Листинг программы
  1. mix(array_a, size_a, array_b, size_b, array_c, g, j, index);
но тогда получается, что я передаю не указатель, а массив передавать мы не можем, тогда что же я передала? Буду ОЧЕНЬ БЛАГОДАРНА за помощь!!!

Решение задачи: «Как работает рекурсия?»

textual
Листинг программы
  1. int factr(int n) {
  2.   int answer;
  3.  
  4.   if(n==1) return(1);
  5.   answer = factr(n-1)*n; /* рекурсивный вызов */
  6.   return(answer);
  7. }
  8.  
  9. /* неркурсивная функция */
  10. int fact(int n) {
  11.   int t, answer;
  12.  
  13.   answer = 1;
  14.  
  15.   for(t=1; t<=n; t++)
  16.     answer=answer*(t);
  17.  
  18.   return(answer);
  19. }

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

  1. В функции factr(int n) определена переменная типа int с именем answer.
  2. Если значение переменной n равно 1, то возвращается 1.
  3. Иначе, происходит рекурсивный вызов функции factr с аргументом n-1, и результат этого вызова умножается на значение переменной n.
  4. Возвращается полученный результат.
  5. В функции fact(int n) определены три переменные типа int: t, answer и answer.
  6. Переменная answer инициализируется значением 1.
  7. В цикле for переменной t присваиваются значения от 1 до n.
  8. На каждой итерации цикла значение переменной answer умножается на текущее значение переменной t.
  9. По завершении цикла возвращается полученное значение переменной answer.

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


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

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

13   голосов , оценка 3.615 из 5

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

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

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