Recursion호출이 함수 몸체의 제일 마지막에 실행되는 문장이고 리턴값이 다른식에 사용되지 않는경우.

풀기단계에 아무일도 할 필요가 없다.

이경우, 새로운 활성레코드를 Stack에 추가하지 않고 현재 활성레코드에 덮어쓴다. 따라서 메모리사용이 줄고, 실제 성능도 좋아진다. 따라서 가능하면 Recursion을 TailRecursion으로 만드는 것이 좋다.

factorial예제를 보면, 문제를 좀 다르게 정의해야한다.

$$ F(n,a) = \left\{ \begin{array}{ll} a & \textrm{if} \quad n=0,n=1 \\ F(n-1,na) & \textrm{if} \quad n <1 \end{array} \right $$

Factorial.c

TailRecursion (last edited 2012-06-19 14:44:46 by 61)

web biohackers.net