v[i] 는 arr 배열에 i라는 숫자가 들어가 있는지 여부를 확인하는 배열입니다.
true면 사용되어 있단 의미고, false는 사용되지 않았단 뜻이지요.
123이 출력되는 과정을 생각해보면
1. func(0) 호출, 첫번째 항으로 1~3 훑는 과정에서 맨 처음 1 사용, v[1] = true
2. func(1) 호출, 두번째 항으로 1-3 훑는 과정에서 1은 사용되었으니 2 사용, v[2] = true
3. func(2) 호출, 세번째 항으로 1-3 훑는 과정에서 1,2가 이미 사용되었으니 3 사용, v[3] = true
4. func(3) 호출, arr 출력 후 되돌아감
5. 3.으로 돌아감. 숫자 3의 활용이 끝났으니 v[3] = false. 1-3까지 모두 훑었으니 함수 종료.
6. 2.로 돌아감. 숫자 2의 활용이 끝났으니 v[2] = false.
이런 과정이라 v[3]=false 다음에 v[2]=false가 된겁니다.
sym9505 4년 전