Home 1부터 n까지 합 구하기
Post
Cancel

1부터 n까지 합 구하기

1
2
3
4
5
6
7
8
9
n = int(input())

def recur(num):
    if num == 1:
        return 1
    else:
        return num+recur(num-1)
        
recur(n)

recur에서 자기보다 1작은 녀석을 불러오다가 계속 가다보면 1을 만나겠지요 그거를 쭉 더하게 됩니다.

img1 reuslt

해보면 100이나 1000이 들어가면 문제가 없지만

max dept

기본적으로 파이썬에서는 재귀가 10000번을 넘어가면 재귀함수가 지나치게 많이 실행시켰기에 강제로 종료시켜버리는 문제가 있습니다.

이거보고 아니 여기서 메모이제이션이나 동적프로그래밍이 들어가나 싶었는데

1
2
import sys
sys.setrecursionlimit(1000000)

그냥 코드 첫 부분에다가 sys라이브러리를 불러와서 최대 재귀 횟수를 늘려줘야 합니다.

1
2
3
4
5
6
7
n = int(input())

def recur(num):
    a = int(n*(n+1)/2)
    return print(a)

recur(n)

아니면 가우스식에 다르면 1부터 n까지의 합은 n(n+1)/2로 알려져있으니 재귀랑 상관없이 이거를 써도 통과는 합니다.

This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.