function SolveIt(a,b) :integer;
begin
.
.
.
if xxx then
yyy
else
c :=SolveIt(aa,bb);
.
.
.
end;
하는 형태를 취하죠.
중요한 점은 무한정 자신을 호출만 할 수는 없으니 언젠가는 xxx조건을 만족시켜서 더이상의 재귀호출을 막아야한다는 겁니다.
실제 잘 사용하면 복잡한 문제를 간단하게 처리할 수 있다고 합니다. 하지만 논리적 흐름이 분명하지 않고 메모리 사용이 상대적으로 많아서 자주 사용되는 형태는 아닙니다. 재귀호출을 사용하는 대표적인 형태로는 하노이 탑이나 이진정렬(퀵소트)등이며 인공지능 언어인 Prolog에서는 언어의 근간이기도 합니다.
다시 자신을 호출한다는 뜻이니 함수내에서 자신을 다시 호출하는 형태를 말하는 것입니다.
가령
function SolveIt(a,b) :integer;
begin
.
.
.
if xxx then
yyy
else
c :=SolveIt(aa,bb);
.
.
.
end;
하는 형태를 취하죠.
중요한 점은 무한정 자신을 호출만 할 수는 없으니 언젠가는 xxx조건을 만족시켜서 더이상의 재귀호출을 막아야한다는 겁니다.
실제 잘 사용하면 복잡한 문제를 간단하게 처리할 수 있다고 합니다. 하지만 논리적 흐름이 분명하지 않고 메모리 사용이 상대적으로 많아서 자주 사용되는 형태는 아닙니다. 재귀호출을 사용하는 대표적인 형태로는 하노이 탑이나 이진정렬(퀵소트)등이며 인공지능 언어인 Prolog에서는 언어의 근간이기도 합니다.