본문 바로가기

과제

[BAEKJOON] 재귀 - python

1. 10872번

for i in range() 활용방법

 

# range() : 연속된 정수를 생성 (필요에 따라 1개 ~ 3개까지의 인자를 입력해 활용할 수 있음)

 

* 종료숫자는 포함하지 않기 때문에 지정된 숫자 전까지만 정수를 생성
- range(종료숫자) : 시작숫자 미입력시 0부터 시작
- range(시작숫자, 종료숫자)
- range(시작숫자, 종료숫자, 간격숫자) : 간격숫자에 음수 입력 시 순서는 역순

 

> range 활용예시

    - range(11)        [결과] 10  9  8  ...   0        / 0부터 10까지의 총 11개의 연속된 정수를 생성 

    - range(10,0, -1)    [결과] 10  9  8  ...   1
    - range(1,11)    [결과] 1  2  3  ...   10

 

# reversed() : 리스트 원소의 순서를 역순으로 뒤집어 반환

> range와의 활용예시
    - reversed(range(11))    [결과] 10  9  8  ...   0
    - reversed(range(1,11))    [결과] 10  9  8  ...   1

 

n = int(input())
next_num = 1           # i의 곱셈 결과를 반복문 밖에 저장 (다음 순서를 실행할 때 리셋되지 않도록)
for i in range(1,n+1): # 1~n까지 반복하면서
    next_num *= i      # 이전 순서에서 누적된 값에 i를 곱하도록
print(next_num)

 

2. 10870번

 

# 재귀호출(recursive call) : 함수 안에서 본 함수를 호출 

- 재귀호출 시 최대 재귀 깊이가 1,000으로 지정되어 해당 기준을 초과하면 오류 발생

- 따라서 종료 조건을 필수로 추가하여 무한 호출 상황을 방지