Go: package main

import (
	"fmt"
)

const MAX = 45

var dp [MAX]int

func fin(n int) int {
	if dp[n] != 0 {
		return dp[n]
	}

	switch n {
	case 0:
		dp[n] = 1
	case 1:
		dp[n] = 1
	default:
		dp[n] = fin(n-1) + fin(n-2)
	}
	return dp[n]
}

func main() {
	var n int
	fmt.Scan(&n)
	fmt.Println(fin(n))
}

Python: n=int(input())
a=1
b=1
list=[]
list.append(a)
list.append(b)
for i in range(n):
  list.append(a+b)
  d=b
  b+=a
  a=d
print(list[n])

Python: N = int(input())
A = [0]*(N+1)
if N == 0 or N == 1:
    print(1)
else:
    A[0] = 1
    A[1] = 1
    for i in range(2, N+1):
        A[i] = A[i-1] + A[i-2]
    print(A[N])

Python: 


def make_fib(n):
    if n == 0 or n == 1: return 1
    if F[n] != -1: return F[n]
    else:
        F[n] = make_fib(n-1)+make_fib(n-2)
        return(F[n])

def fibonacci(n):
    if n == 0 or n == 1: return 1
    else: return(fibonacci(n-1)+fibonacci(n-2))

n = int(input())
F = [-1 for i in range(50)]
F[0] = F[1] = 1   #n=0 t0 1 pre-registered
print(make_fib(n))

Python: class fibNum():
    def __init__(self):
        self.arr = [1, 1]
    def fib(self, n):
        return_num = 1
        if n > 1:
            if len(self.arr) <= n:
                self.arr.append( self.fib(n-1) + self.fib(n-2) )
            return_num = self.arr[n]
        return return_num

def main():
    n = int( input() )
    fn = fibNum()
    print( fn.fib(n) )

if __name__ == '__main__':
    main()

Python: n = int(input())
dp = [0] * (n+1)

dp[0] = 1
dp[1] = 1
for i in range(2, n+1):
    dp[i] = dp[i-1] + dp[i-2]
print(dp[-1])

Python: n = int(input())

dp = [0]*(45)
dp[0] = 1
dp[1] = 1
def fib(i):
    j = 2
    while j <= i:
        if j >= 2:
            dp[j] = dp[j-1] + dp[j-2]
        j += 1

fib(n)
print(dp[n])

Python: fib_table = [0 for _ in range(45)]
fib_table[0], fib_table[1] = 1, 1
for i in range(2, 45):
  fib_table[i] = fib_table[i-1]+fib_table[i-2]
n = int(input())
print(fib_table[n])

Python: #coding:utf-8
#1_10_A
def fibo(n, numbers):
    if n == 0 or n == 1:
        numbers[n] = 1
        return numbers[n]
    elif numbers[n]:
        return numbers[n]
    else:
        numbers[n] = fibo(n - 1, numbers) + fibo(n - 2, numbers)
        return numbers[n]

n = int(input())
fibonacci_numbers = [0 for i in range(n + 1)]
print(fibo(n, fibonacci_numbers))

Python: N = int(input())
dp = {0:1,1:1}
for i in range(1,N):
    dp[i+1] = dp[i]+dp[i-1]
print(dp[N])

Python: #40 フィボナッチ数列 - Time Limit Exceeded

n = int(input())
a = 1
b = 1
c = []
c.append(a)     #リストcの最後にaの値を付加
c.append(b)     #リストcの最後にbの値を付加
       
for i in range(n):
        c.append(a+b)   #リストcの最後にa+bの値を付加
        d = b           
        b += a
        a = d
print(c[n])

Python: n = int(input())
fib = [0]*(n+1)
fib[0] = 1
fib[1] = 1

if n<=1:
  print(fib[n])
  exit()
for i in range(2,n+1):
    fib[i] = fib[i-1]+fib[i-2]

print(fib[n])

Python: F_list = [1,1] + [None]*43

def fibo(n):
  F=F_list[n]
  if n==0 or n==1: return F
  F = fibo(n-1)+fibo(n-2)
  F_list[n]=F
  return F


n = int(input())

print(fibo(n))

Python: N = int(input())
a = b = 1
while N:
    a, b = b, a+b
    N -= 1
print(a)

Python: n=int(input())

a=[1]*45


def fib(n):
    if n==0 or n==1:
        return 1
    else:
        if a[n]==1:
            a[n]=fib(n-1)+fib(n-2)
            
        return a[n]
           
print(fib(n))

Python: # -*- coding: utf-8 -*-
 
 
def main(n):
    lst = [1, 1]
    for i in range(2, n + 1):
        lst.append(lst[i - 2] + lst[i - 1])
    return lst[n]
 

if __name__ == '__main__': 
    n = int(input())
    print(main(n))

Python: def fib(n):
    ls=[0]*(n+1)
    ls[0]=ls[1]=1
    for i in range(2,n+1):
        ls[i]=ls[i-1]+ls[i-2] 
    return ls[-1]
    
n=int(input())
print(fib(n))

Python: n=int(input())
s=[-1 for i in range(n+1)]

def fib(n):
  if n==0 or n==1:
    s[n]=1
  if s[n] != -1:
    return s[n]
  s[n] = fib(n-1) + fib(n-2)
  return s[n]

print(fib(n))

Python: 
def main():
    size = 45
    fib = [0]*size
    fib[0] = 1
    fib[1] = 1
    for i in range(2,size):
        fib[i] = fib[i-1]+fib[i-2]
    n = int(input())
    print (fib[n])


if __name__ == '__main__':
    main()

Python: def g(a,b,n):
    if n==1:return a
    else:return g(a+b,a,n-1)
a,b=1,1
print(g(a,b,int(input())))

Python: n=int(input())
a,b=1,1
if n<=1:
    print(1)
else:
    for i in range(n-1):
        c=a+b
        a=b
        b=c
    print(c)

Python: def Fibonacci(n, a1, a2):
	if n<1 : return a1
	return Fibonacci(n-1,a1+a2,a1)

print( Fibonacci( int(input()), 1, 0 ) )

Python: n = int(input())
f = [1,1]
for _ in range(n-1):
    f_next = f[-1]+f[-2]
    f.append(f_next)
print(f[n])

Python: n = int(input())

fib = [0]*(n+1)

for i in range(n+1):
    if i==0 or i==1:
        fib[i] = 1
    else:
        fib[i] = fib[i-1] + fib[i-2]

print(fib[n])

Python: n = int(input())
x, y = 1, 1
for i in range(n):
  x, y = y, x + y
print(x)

Python: n=int(input())
F=[None for i in range(n+1)]
F[0],F[1]=1,1
for i in range(2,n+1):
    F[i]=F[i-2]+F[i-1]

answer=F[n]
print(answer)

Python: n = int(input()) - 1
fib = [1, 1]
for i in range(n):
    fib[i] = fib[i-1] + fib[i-2]
print(fib[n])

Python: num = int(input())

dp = { 0: 1, 1: 1 }
def fibonacci(n):
  return dp[n] if n in dp else fibonacci(n - 1) + fibonacci(n - 2)

print(fibonacci(num))

Python: # import bisect
# from collections import Counter, deque
# import copy
# from fractions import gcd

def resolve():
    N=int(input())

    # dp[i]はh[i]までにかかるコストの最小値
    dp = [float('inf') for _ in range(N+1)]
    dp[0] = 1
    dp[1]=1


    for i in range(2,N+1):
        dp[i] = min(dp[i], dp[i - 1] + dp[i-2])
    print(dp[N])



resolve()

Python: n = int(input())
for i in range(n):
	a,b = b,a+b


print(a)

Python: a=1
b=1
c=[]
n=int(input())
c.append(a)
c.append(b)
for i in range(n):
    c.append(a+b)
    d=b
    b+=a
    a=d
print(c[n])

Python: n = int(input())
fib = [0] * (n + 1)
if n == 0 or n == 1:
    print(1)
    exit()
    
fib[0] = 1
fib[1] = 1
for i in range(2, n + 1):
    fib[i] = fib[i - 1] + fib[i -2]

print(fib[-1])

Python: fib = [0]*45
fib[0] = 1
fib[1] = 1
for i in range(2, 45):
    fib[i] = fib[i-1] + fib[i-2]
x = int(input())
print(fib[x])

Python: def fib(n):
    f0, f1 = 1, 1

    for i in range(n - 1):
        f1, f0 = f1 + f0, f1

    return f1

n = int(input())
ans = fib(n)

print(ans)

Python: answer_list = [1, 1] + [None] * 43

def fib(num):
    ans = answer_list[num]
    if ans:
        return ans
    ans = fib(num - 1) + fib(num - 2)
    answer_list[num] = ans
    return ans

Python: #!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys


# def fib_bad(n):
#     if not n or n == 1:
#         return 1
#     return fib_bad(n - 2) + fib_bad(n - 1)


def fib_dp(n):
    fib_list[:1] = [1, 1]
    for i in range(2, n + 1):
        fib_list[i] = fib_list[i - 2] + fib_list[i - 1]
    return fib_list[n]


if __name__ == '__main__':
    _input = sys.stdin.readlines()
    index = int(_input[0])
    fib_list = [None] * index
    print(fib_dp(index))

Python: n=int(input())
DP=[0]*45
DP[0],DP[1]=1,1
for i in range(2,45):
    DP[i]=DP[i-1]+DP[i-2]
print(DP[n])

Python: #!/usr/bin/env python3

n = int(input())

# TLE
# def fib(n):
#     if n == 0:
#         return 1
#     elif n == 1:
#         return 1
#     else:
#         return fib(n - 1) + fib(n - 2)
# print(fib(n))

dp = {}
dp[0] = 1
dp[1] = 1

for i in range(2, n + 1):
    dp[i] = dp[i - 1] + dp[i - 2]

print(dp[n])

Python: n = int(input())

def Fib(n):
    a, b = 0, 1
    if n == 0:
        return a + 1
    elif n == 1:
        return b
    else:
        for i in range(n):
            a, b = b, a + b
        return b

print(Fib(n))