처음 접하고 나서 이 함수의 동작 방식을 바로 이해하는 것은 결코 쉽지 않은 일입니다.
코드에서 지금까지 논의했던 집합은 리스트로 구현했습니다. 실행해 보면 실행 도중 자기 스스로를 호출합니다. 이때 전달된 인수를 살펴보면 start+1입니다. 리스트에서 집합의 시작 위치를 한 칸 뒤로 옮겨 주었으니 집합 크기는 당연히 줄어들겠지요. 그렇게 줄어들다 공집합이 되는 순간(start가 집합의 원소 개수와 같아지는 순간) 호출을 중단하고 현재 리스트를 출력하면 됩니다.
이 코드를 실행하면 다음 결과가 출력됩니다.
[1, 2, 3]
[1, 3, 2]
[2, 1, 3]
[2, 3, 1]
[3, 2, 1]
[3, 1, 2]
지금까지 재귀 함수를 자세하게 알아보았습니다. 2장에서는 자료 구조를 왜 배워야 하는지, 각 자료 구조 성능을 어떻게 판단해야 하는지 이야기하겠습니다.