10009를 나누라고 본문에 나옴
 
a = int(input())
fibo = [0] * 201
 
 
def fib(n):
  if n < 2:
    return n
  if fibo[n] == 0:
    fibo[n] = (fib(n - 1) + fib(n - 2)) % 10009
#    print("n=",n,"fibo[n]=",fibo[n])
 
  return fibo[n]
 
 
print(fib(a))
 
 
================================================>
구글링하다보니
 
fib={1:1,2:1}
 
def f(x) :
    if x in fib:
        return fib[x]
    fib[x]=(f(x-1)+f(x-2))%10009
    return fib[x]
 
n=int(input())
print(f(n))
로 하면 깔끔하게 끝남
 
 
여기서 포인트는 n번째를 거꾸로 Tracking 하는 것임
 
import sys
sys.setrecursionlimit(10**7)
 
a = int(input())
 
def fib(n):
  if n == 0:
    return 0
  elif n == 1 or n == 2:
    return 1
  else:
    return fib(n - 1) + fib(n - 2)
 
print(fib(a))
 
import sys
sys.setrecursionlimit(10**7)
 
n = int(input())
 
def add_ft(a, sum):
  if a < n+1 :
    sum = sum * a
    return add_ft(a + 1, sum)
  else:
    return sum
 
print(add_ft(2, 1))
 
아래 포인트는 RecursionError: maximum recursion depth exceeded in comparison 를 출력함의 문제이다
 
전체 재귀함수의 크기를 늘려주면 된다!!
 
 
import sys
sys.setrecursionlimit(10**7)
 
 
n = int(input())
sum = 0
 
 
def add_ft(n, su):
  if n > 0:
    su = su + n
    return add_ft(n - 1, su)
  else:
    return su
 
print(add_ft(n, 0))
 
주의 사항은 
연속된 print를 연결로 할 경우, print(s, end=' ')로 해결한다.
 
 
 
 
st, ed = map(int, input().split())
 
def add_ft(s,e):
  if s<=e:
    if s%2==1:
      print(s, end=' ')
      return add_ft(s+1,e)
    else:
      return add_ft(s+1,e)
 
add_ft(st, ed)
 
 
n=int(input())
 
def add_ft(a):
  if a > 0:
    print(a)
    return add_ft(a-1)
  else:
    pass
 
add_ft(n)

+ Recent posts