Go: package main

import (
	"bufio"
	"fmt"
	"os"
	"strconv"
)

func main() {
	sc1 := bufio.NewScanner(os.Stdin)
	sc1.Split(bufio.ScanWords)
	sc1.Scan()
	num, _ := strconv.Atoi(sc1.Text())
	cache := make([]*int, num+1)
	fmt.Println(fib(num, cache))

}

func fib(n int, cache []*int) int {
	if n <= 1 {
		return 1
	}

 	if cache[n] != nil {
		return *(cache[n])
	}

	result := fib(n -2, cache) + fib(n -1, cache)
	cache[n] = &result
	return result
}

Python: def deco_fibo(func):
    answer_list = [1, 1] + [None] * 43
    def main_fibo(i):
        ans = answer_list[i]
        if ans:
            return ans
        ans = func(i)
        answer_list[i] = ans
        return ans
    return main_fibo

@deco_fibo
def fibo(num):
    return fibo(num - 1) + fibo(num - 2)


n = int(input())

print(fibo(n))

Python: memo = [0, 1]

def fib(n):
    if (n in memo):
        return memo[n]
    ans = fib(n-1) + fib(n-2)
    memo.append(ans)
    return ans

n = int(input())
print(fib(n))

Python: n=int(input())
if n==0 or n==1:
    print(1)
else:
    N=1
    m=1
    for i in range(n-1):
        M=N+m
        m=N
        N=M
    print(M)

Python: list=[1,1]
n=int(input())

t=0
sum=0
if n==0 or n==1:
    print(1)
else:
    for i in range(n):
        list.append(list[i]+list[i+1])
    print(list[n])

Python: import sys

n = int(sys.stdin.readline().strip())

fib = [0] * (n+1)
fib[0] = 1
fib[1] = 1

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

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

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

Python: # def fibb(n):
#     if n == 1 or n == 2:
#         return 1
#     else:
#         return fibb(n-1)+fibb(n-2)

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

Python: def fib(n):
    if n == 0:
        return 1
    if n == 1:
        return 1
    if F[n] > 0:
        return F[n]
    F[n] = fib(n-1) + fib(n-2)
    return F[n]

n = int(input())
F = [0 for i in range(n+1)]
print(fib(n))

Python: def resolve():
    n = int(input())
    A = [1, 1]
    for i in range(1, 45):
        A.append(A[i - 1] + A[i])
    print(A[n])


resolve()

Python: import sys
input = sys.stdin.readline

n = int(input())
F = [1]*50
for i in range(2, n+1):
    F[i] = F[i-1] + F[i-2]

print(F[n])

Python: def fib(n, fib_table):
    if n == 0 or n == 1:
        return 1
    if fib_table[n] != None:
        return fib_table[n]
    fib_table[n] = fib(n-1, fib_table) + fib(n-2, fib_table)
    return fib_table[n]

n = int(input())
fib_table = [None]*(n+1)
fib_table[0] = 1
fib_table[1] = 1

print(fib(n, fib_table))

Python: memo = [1, 1]

def fib(n):
    if (n in memo):
        return memo[n]
    ans = fib(n-1) + fib(n-2)
    memo.append(ans)
    return ans

n = int(input())
print(fib(n))

Python: # -*- coding: utf-8 -*-
"""
Created on Fri May  4 20:13:10 2018
ALDS1_10_A
@author: maezawa
"""

fib_arr = [None for _ in range(45)]
fib_arr[0] = 1
fib_arr[1] = 1

def fib(n):
    if fib_arr[n] != None:
        return fib_arr[n]
    fib_arr[n] = fib(n-1)+fib(n-2)
    return fib_arr[n]
    
n = int(input())
print(fib(n))

Python: x=int(input())
if x == 0 or x == 1 : print("1")
else : 
    i=0
    b=1
    c=1
    while i<(x-1) :
        d=b+c
        c=b
        b=d
        i=i+1
        
    print(b)

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

Python: import sys
input = sys.stdin.readline

n = int(input())
F = [1]*50
for i in range(2, n+1):
    F[i] = F[i-1] + F[i-2]

print(F[n])

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())
a=1
b=1
i=0
while i<n:
  a, b=b, a+b
  i+=1
print(a)

Python: #!/usr/bin/python

n = int(input())

def fib(n):
    l = list()
    l.append(1)
    l.append(1)

    for i in range(2, n+1):
        l.append(l[i-1] + l[i-2])

    return l[-1]

print(fib(n))

Python: def fib(n):
    if n == 0 or n == 1:
        return 1
    return fib(n-1) + fib(n-2)

n = int(input())
print(fib(n))

Python: def fib(n):
  if n ==1 or n == 0:
    return 1
  else:
    return fib(n-1) + fib(n-2)
  
print(fib(int(input())))

Python: n = int(input())
F = [0] * 45

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

Python: n = int(input())

def fib(i):
    if i<=1:
        return 1
    
    else:
        a, b = 0, 1
        for i in range(n+1):
            c = b + a
            b = a
            a = c
        return c

print(fib(n))

Python: target = int(input()) + 1
fib = [0 for n in range(target + 1)]
for i in range(target + 1):
    if i == 0:
        continue
    elif i == 1:
        fib[i] = 1
    else:
        fib[i] = fib[i - 1] + fib[i - 2]
print(fib[target])

Python: # ???????¨?????????????????§£???
# ?????°?????¨?????¢??????????????¨???????????¢????????£???


def fibonacci(n):
    num1 = 1
    num2 = 1
    tmp = 1

    for i in range(1, n):
        tmp = num1 + num2
        num1 = num2
        num2 = tmp

    return tmp


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

Python: #フィボナッチ数列
n = int(input())
dp = [0 for i in range(1000)]
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())

fib=[1,1]
for i in range(2,n+1):
    a=fib[i-1]+fib[i-2]
    fib.append(a)

print(fib[n])

Python: F = [1,1]
for i in range(2, int(input())+1):
    F.append(F[i-2] + F[i-1])
print(F[-1])

Python: dp = [0]*50

def fib(n):
    if dp[n] != 0:
        return dp[n]
    if n==0:
        dp[n] = 1
    elif n==1:
        dp[n] = 1
    else:
        dp[n] = fib(n-1)+fib(n-2)
    return dp[n]

print(fib(int(input())))

Python: class Fibonacci(object):
    record = [1, 1]
    
    def get_nth(self, n):
        if n < len(Fibonacci.record):
            return Fibonacci.record[n]
        
        for i in range(len(Fibonacci.record), n+1):
            result = Fibonacci.record[i-1] + Fibonacci.record[i-2]
            Fibonacci.record.append(result)
        
        return Fibonacci.record[n]
 
 
if __name__ == '__main__':
    num = int(input())
    f = Fibonacci()
    result = f.get_nth(num)
    print('{0}'.format(result))

Python: n = int(input())

fibs = [0 for _ in range(n+1)]
# checks = [False for _ in range(n+1)]

def fib(k):
    for i in range(k+1):
        if i == 0:
            fibs[i] = 1
        elif i == 1:
            fibs[i] = 1
        else:
            fibs[i] = fibs[i-1] + fibs[i-2]
    return fibs[k]

print(fib(n))

Python: from functools import lru_cache


@lru_cache(maxsize=None)
def fib(n):
    """ http://docs.python.jp/3/library/functools.html """
    if n < 2:
        return n
    return fib(n-1) + fib(n-2)


class Fibonacci(object):
    memo = [1, 1]

    def get_nth(self, n):
        if n < len(Fibonacci.memo):
            return Fibonacci.memo[n]
        # print('fib({0}) not found'.format(n))
        for i in range(len(Fibonacci.memo), n+1):
            result = Fibonacci.memo[i-1] + Fibonacci.memo[i-2]
            Fibonacci.memo.append(result)
            # print('fib({0})={1} append'.format(i, result))
        return Fibonacci.memo[n]


if __name__ == '__main__':
    # ??????????????\???
    num = int(input())

    # ?????£??????????????°????¨????
    # f = Fibonacci()
    # result = f.get_nth(num)
    result = fib(num+1)

    # ???????????????
    print('{0}'.format(result))

Python: f=[1,1]
for _ in[0]*43:f+=[f(-2)+f(-1)]
print(f[int(input())])