Ответ 1
В head recursion
рекурсивный вызов, когда это произойдет, предшествует другой обработке в функции (подумайте, что это происходит в верхней части или голове функции).
В tail recursion
, его противоположность - обработка происходит до рекурсивного вызова. Выбор между двумя рекурсивными стилями может показаться произвольным, но выбор может иметь значение.
Функция с путём с единственным рекурсивным вызовом в начале пути использует так называемую рекурсию головы. Факториальная функция предыдущего экспоната использует рекурсию головы. Первое, что он делает, когда оно определяет, что требуется рекурсия, - это вызвать себя с декрементированным параметром. Функция с единственным рекурсивным вызовом в конце пути использует хвостовую рекурсию. Обратитесь к этой статье
Пример рекурсии:
public void tail(int n) public void head(int n)
{ {
if(n == 1) if(n == 0)
return; return;
else else
System.out.println(n); head(n-1);
tail(n-1); System.out.println(n);
} }
Если рекурсивный вызов встречается в конце метода, он называется tail recursion
. Рекурсия хвоста similar to a loop
. method executes all the statements before jumping into the next recursive call
.
Если рекурсивный вызов происходит на beginning of a method, it is called a head recursion
. method saves the state before jumping into the next recursive call
.