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

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

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

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

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

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

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

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

textual
Листинг программы
int factr(int n) {
  int answer;
 
  if(n==1) return(1);
  answer = factr(n-1)*n; /* рекурсивный вызов */
  return(answer);
}
 
/* неркурсивная функция */
int fact(int n) {
  int t, answer;
 
  answer = 1;
 
  for(t=1; t<=n; t++)
    answer=answer*(t);
 
  return(answer);
}

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

  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