[Recursive Function] 숫자 합

HOONSSAC·2024년 1월 9일
1

Codeit Algorithm

목록 보기
6/15
post-thumbnail

코드잇 강의를 통해 알고리즘에 대해 공부하며 배운 내용들을 기록한 글입니다.


문제 설명

nn번째 삼각수(triangle number)는 자연수 11부터 nn까지의 합이다.
파라미터로 정수값 n을 받고 nn번째 삼각수를 리턴해 주는 재귀 함수 triangle_number를 써라.
nn11이상의 자연수라고 가정하자.

단, 함수 안에 반복문은 쓰면 안된다!

# 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에 현재의 nn에 1을 뺀 값을 더해주면 된다.
n에 1을 뺀 값은 triangle_number함수를 다시 호출해 n-1을 파라미터로 입력시키면 된다!

else:
        sum = n + triangle_number(n-1)
        return sum
profile
훈싹의 개발여행

0개의 댓글