def recur(n : int) -> int:
if n > 0:
recur(n-1)
print(n)
recur(n-2)
x = int(input('정숫값을 입력하세요 : '))
recur(x)
가장 상위 함수 호출부터 시작하여 계단식으로 자세히 조사해 나가는 분석 방법
recur(4) 실행 과정
1. recur(3) 실행
2. 4 출력
3. recur(2) 실행
하향식 분석과는 반대로 아래쪽부터 쌓아 올리며 분석하는 방법
recur(1)의 실행 과정
1. recur(0) 실행
2. 1 출력
3. recur(-1) 실행
recur(2)의 실행 과정
1. recur(1) 실행
2. 2 출력
3. recur(0) 실행
n값을 출력하기 전에 recur(n-1)을 실행해야 하기 때문에, 맨 앞에서 재귀호출하는 recur(n-1) 함수 제거는 까다로움
현재의 n값을 임시로 저장해야 함
stack으로 해결하기
from stack import Stack
def recur(n:int)->int:
s = Stack(n)
while True:
if n > 0:
s.push(n)
n = n-1
continue
if not s.is_empty():
n = s.pop()
print(n)
n = n - 2
continue
break
x = int(input('정숫값 입력 : '))
recur(x)