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을 만나겠지요 그거를 쭉 더하게 됩니다.
해보면 100이나 1000이 들어가면 문제가 없지만
기본적으로 파이썬에서는 재귀가 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로 알려져있으니 재귀랑 상관없이 이거를 써도 통과는 합니다.
Comments powered by Disqus.