Differences between revisions 2 and 6 (spanning 4 versions)
Revision 2 as of 2005-10-25 12:39:51
Size: 698
Editor: 203
Comment: fix latex format
Revision 6 as of 2012-06-19 14:44:46
Size: 705
Editor: 61
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
[Recursion]호출이 함수 몸체의 제일 마지막에 실행되는 문장이고 리턴값이 다른식에 사용되지 않는경우. [[Recursion]]호출이 함수 몸체의 제일 마지막에 실행되는 문장이고 리턴값이 다른식에 사용되지 않는경우.
Line 5: Line 5:
이경우, 새로운 활성레코드를 [Stack]에 추가하지 않고 현재 활성레코드에 덮어쓴다. 따라서 메모리사용이 줄고, 실제 성능도 좋아진다. 따라서 가능하면 [Recursion]을 TailRecursion으로 만드는 것이 좋다. 이경우, 새로운 활성레코드를 [[Stack]]에 추가하지 않고 현재 활성레코드에 덮어쓴다. 따라서 메모리사용이 줄고, 실제 성능도 좋아진다. 따라서 가능하면 [[Recursion]]을 TailRecursion으로 만드는 것이 좋다.
Line 9: Line 9:
{{{#!python {{{#!latex
Line 13: Line 13:
[Factorial.c] [[Factorial.c]]

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