пздц мне хорошо теперь
Вдогонку
какая-то неполная рекурсия
Угу, нет меньших мальчуганов, да и у первого бошка целая
Возможно во всём виноват стул)
Возможно во всём виноват стул)
три итерации это не рекурсия, гуманитарий епт
какбэ правильно написанная рекурсия должна где-то останавливаться
сам гуманитарий, бесконечная рекурсия - это уже фрактал.
"Реку́рсия — определение, описание, изображение какого-либо объекта или процесса внутри самого этого объекта или процесса, то есть ситуация, когда объект является частью самого себя"
"Реку́рсия — определение, описание, изображение какого-либо объекта или процесса внутри самого этого объекта или процесса, то есть ситуация, когда объект является частью самого себя"
Заебали такие умники как ты:
1) рекурсия - это вызов функции самой собой; бывает прямая - функция вызывает себя же, бывает косвенная - функция А вызывает функцию Б, а та вызывает А (не обязательно два уровня, может быть много);
2) рекурсия НИЧЕМ не отличается от цикла идеологически; более того, в функциональных языках циклов НЕТ и они реализуются именно через рекурсию; более того, во многих языках некоторые виды рекурсии разворачиваются компилятором в, сюрприз, цикл (оптимизация хвостовой рекурсии)!
3) количество повторов вызовов в рекурсии никак не относится к тому, рекурсия это или нет; более того, на практике бесконечных рекусий обычно не делают - при вызове функции тратится стек, а вышеупомянутая оптимизация хвостовой рекурсии возможна не всегда и не во всех компиляторах есть, так что при бесконечной рекурсии просто кончится стек и программа упадёт; более того, даже ОДИН вызов функции _самой собой_ - тоже вполне себе рекурсия, пример этого:
void foo(int x) {
doSmth(x);
if (abs(x % 2) != 0) {
foo(abs(x - 1));
}
}
Тут именно рекурсия, просто с глубиной 1.
Но на всякий случай вот тебе пример рекурсии спецом с тремя итерациями:
void foo(int x, int level = 3) {
doSmth(x);
if (level != 0) {
foo(x, level--);
}
}
Накипело.
1) рекурсия - это вызов функции самой собой; бывает прямая - функция вызывает себя же, бывает косвенная - функция А вызывает функцию Б, а та вызывает А (не обязательно два уровня, может быть много);
2) рекурсия НИЧЕМ не отличается от цикла идеологически; более того, в функциональных языках циклов НЕТ и они реализуются именно через рекурсию; более того, во многих языках некоторые виды рекурсии разворачиваются компилятором в, сюрприз, цикл (оптимизация хвостовой рекурсии)!
3) количество повторов вызовов в рекурсии никак не относится к тому, рекурсия это или нет; более того, на практике бесконечных рекусий обычно не делают - при вызове функции тратится стек, а вышеупомянутая оптимизация хвостовой рекурсии возможна не всегда и не во всех компиляторах есть, так что при бесконечной рекурсии просто кончится стек и программа упадёт; более того, даже ОДИН вызов функции _самой собой_ - тоже вполне себе рекурсия, пример этого:
void foo(int x) {
doSmth(x);
if (abs(x % 2) != 0) {
foo(abs(x - 1));
}
}
Тут именно рекурсия, просто с глубиной 1.
Но на всякий случай вот тебе пример рекурсии спецом с тремя итерациями:
void foo(int x, int level = 3) {
doSmth(x);
if (level != 0) {
foo(x, level--);
}
}
Накипело.
НЕХ в теги
Чтобы написать коммент, необходимо залогиниться