코드잇 강의를 통해 알고리즘에 대해 공부하며 배운 내용들을 기록한 글입니다.
번째 삼각수(triangle number)는 자연수 부터 까지의 합이다.
파라미터로 정수값 n
을 받고 번째 삼각수를 리턴해 주는 재귀 함수 triangle_number
를 써라.
은 이상의 자연수라고 가정하자.
단, 함수 안에 반복문은 쓰면 안된다!
# 1부터 n까지의 합을 리턴
def triangle_number(n):
# 여기에 코드를 작성하세요
# 테스트 코드: triangle_number(1)부터 triangle_number(10)까지 출력
for i in range(1, 11):
print(triangle_number(i))
1
3
6
10
15
21
28
36
45
55
# 1부터 n까지의 합을 리턴
def triangle_number(n):
if n == 1:
return 1
else:
sum = n + triangle_number(n-1)
return sum
# 테스트 코드: triangle_number(1)부터 triangle_number(10)까지 출력
for i in range(1, 11):
print(triangle_number(i))
나는 sum
이라는 변수를 이용해서 문제를 풀었다.
재귀 함수를 통해 1씩 감소하는 n
이 바로 이 sum
변수에 차곡차곡 쌓일 것이다.
n
을 1씩 감소시키면서 재귀 함수를 반복적으로 호출하다가 n
이 1이 되었을 때 거기서 멈춰주어야 하기 때문에, 조건문을 통해 n
이 1일 때 1을 리턴하도록 하였다.
def triangle_number(n):
sum = n
if n == 1:
return 1
n
이 1이 아닐 경우에는 sum
에 현재의 n
과 n
에 1을 뺀 값을 더해주면 된다.
n
에 1을 뺀 값은 triangle_number
함수를 다시 호출해 n-1
을 파라미터로 입력시키면 된다!
else:
sum = n + triangle_number(n-1)
return sum