История изменений
Исправление k0valenk0_igor, (текущая версия) :
Лично я называю «рекурсией» повторное выполнение кода. ИМХО цикл это тоже рекурсия
На самом деле, это совсем не так. Главное отличие рекурсии от цикличного исполнения - в контексте. У цикла контекст один и тот же, у рекурсивно вызванного кода - разный. Вот ссылка на вики
Обратите внимание на следующие слова
Реализация рекурсивных вызовов функций в практически применяемых языках и средах программирования, как правило, опирается на механизм стека вызовов — адрес возврата и локальные переменные функции записываются в стек, благодаря чему каждый следующий рекурсивный вызов этой функции пользуется своим набором локальных переменных и за счёт этого работает корректно.
Стек в данном случае и есть контекст.
И в сабже как раз контекст разный. И однако, - qulinxao правильно подметил, - тут нет вложенности возвратов. Так что тут хотя и рекурсия, имхо, но это не декларативная рекурсия, а рекурсия реализации.
Исправление k0valenk0_igor, :
Лично я называю «рекурсией» повторное выполнение кода. ИМХО цикл это тоже рекурсия
На самом деле, это совсем не так. Главное отличие рекурсии от цикличного исполнения в контексте. У цикла контекст один и тот же, у рекурсивно вызванного кода - разный. Вот ссылка на вики
Обратите внимание на следующие слова
Реализация рекурсивных вызовов функций в практически применяемых языках и средах программирования, как правило, опирается на механизм стека вызовов — адрес возврата и локальные переменные функции записываются в стек, благодаря чему каждый следующий рекурсивный вызов этой функции пользуется своим набором локальных переменных и за счёт этого работает корректно.
Стек в данном случае и есть контекст.
И в сабже как раз контекст разный. И однако, - qulinxao правильно подметил, - тут нет вложенности возвратов. Так что тут хотя и рекурсия, имхо, но это не декларативная рекурсия, а рекурсия реализации.
Исходная версия k0valenk0_igor, :
Лично я называю «рекурсией» повторное выполнение кода. ИМХО цикл это тоже рекурсия
На самом деле, это совсем не так. Главное отличие рекурсии от цикличного исполнения в контексте. У цикла контекст один и тот же, у рекурсивно вызванного кода - разный. Вот ссылка на вики
Обратите внимание на следующие слова
Реализация рекурсивных вызовов функций в практически применяемых языках и средах программирования, как правило, опирается на механизм стека вызовов — адрес возврата и локальные переменные функции записываются в стек, благодаря чему каждый следующий рекурсивный вызов этой функции пользуется своим набором локальных переменных и за счёт этого работает корректно.
Стек в данном случае и есть контекст.
И в сабже как раз контекст разный. И однако, - qulinxao правильно подметил, - тут нет вложенности возвратов. Так что тут хотя и рекурсия, имхо, но это рекурсия реализации, а не рекурсия определения/описания. То есть это не декларативная рекурсия.