Как работает рекурсия? - 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); }
Объяснение кода листинга программы
- В функции factr(int n) определена переменная типа int с именем answer.
- Если значение переменной n равно 1, то возвращается 1.
- Иначе, происходит рекурсивный вызов функции factr с аргументом n-1, и результат этого вызова умножается на значение переменной n.
- Возвращается полученный результат.
- В функции fact(int n) определены три переменные типа int: t, answer и answer.
- Переменная answer инициализируется значением 1.
- В цикле for переменной t присваиваются значения от 1 до n.
- На каждой итерации цикла значение переменной answer умножается на текущее значение переменной t.
- По завершении цикла возвращается полученное значение переменной answer.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д