The difference between head & tail recursion
This question already has an answer here:
In head recursion
, the recursive call, when it happens, comes before other processing in the function (think of it happening at the top, or head, of the function).
In tail recursion
, it's the opposite—the processing occurs before the recursive call. Choosing between the two recursive styles may seem arbitrary, but the choice can make all the difference.
A function with a path with a single recursive call at the beginning of the path uses what is called head recursion. The factorial function of a previous exhibit uses head recursion. The first thing it does once it determines that recursion is needed is to call itself with the decremented parameter. A function with a single recursive call at the end of a path is using tail recursion. Refer this article
Example 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);
} }
If the recursive call occurs at the end of a method, it is called a tail recursion
. The tail recursion is similar to a loop
. The method executes all the statements before jumping into the next recursive call
.
If the recursive call occurs at the beginning of a method, it is called a head recursion
. The method saves the state before jumping into the next recursive call
.
上一篇: 什么是尾递归优化?
下一篇: 头尾递归的区别