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