Go: package main

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

//util
var sc = bufio.NewScanner(os.Stdin)

func nextStr() string {
	sc.Scan()
	return sc.Text()
}

func nextInt() int {
	sc.Scan()
	i, e := strconv.Atoi(sc.Text())
	if e != nil {
		panic(e)
	}
	return i
}

func printList(list []int) {
	buf := bufio.NewWriter(os.Stdout)
	for _, v := range list {
		buf.Write([]byte(fmt.Sprintf(" %d", v)))
	}
	buf.Write([]byte("\n"))
	buf.Flush()
}

//solve
//単純な場合
func fibonacci_(n int) int {
	if n == 0 || n == 1 {
		return 1
	}
	return fibonacci_(n-2) + fibonacci_(n-1)
}

//メモ再帰の利用
func fibonacci(n int) int {
	if n == 0 || n == 1 {
		F[n] = 1
	}
	//F[n]が計算済みの場合
	if F[n] > 0 {
		return F[n]
	}
	F[n] = fibonacci(n-2) + fibonacci(n-1)
	return F[n]
}

const MAX = 50

var F [MAX]int

func main() {
	sc.Split(bufio.ScanWords)
	n := nextInt()
	fmt.Println(fibonacci(n))

}

Python: from functools import lru_cache
n = int(input())

@lru_cache(maxsize=None)


def fib(n):
    if n==0 or n==1:
        return 1
   
    else:
        return fib(n-1)+fib(n-2)
        
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: n=int(input())
fib = [1,1]

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

Python: def fib(n):
    n=int(n)
    F=[1,1]
    if n>=2:
        for i in range(1,n):
            F.append(F[i-1]+F[i])
    
    return F[n]
    
a=input(int())
fib(a)

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

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

import sys
import re
import math
import itertools
import functools
import logging

logging.basicConfig(level=logging.DEBUG, format="DBG: %(message)s")

def dbg(msg, *args, **kwargs):
    logging.debug(msg, *args, **kwargs)

def fib(n):
    assert n >= 0

    f0 = 1
    f1 = 1

    if n == 0: return f0
    if n == 1: return f1

    for _ in range(n-1):
        f2 = f1 + f0
        f0 = f1
        f1 = f2

    return f2

def main():
    n = int(input())

    print(fib(n))

if __name__ == "__main__": main()

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

import sys


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


if __name__ == '__main__':
    _input = sys.stdin.readlines()
    index = int(_input[0])
    print(fib_1(index))

Python: def fibonacci_dp(n,lf):
    if n == 0 or n == 1:
        return lf[n]
    if n < len(lf):
        return lf[n]
    lf.insert(n,fibonacci_dp(n-2,lf) + fibonacci_dp(n-1,lf))
    return lf[n]

if __name__ == "__main__":
    n = int(input())
    lf = [1,1,]
    print(fibonacci_dp(n,lf))

Python: def make_fibonacchi(n: int):
    
    res = {}
    
    res[0] = 1
    res[1] = 1
    
    if n == 0 or n == 1:
        return 1
    
    for i in range(2, n + 1):
        res[i] = res[i-1] + res[i-2]
    
    return res[n]


n = int(input())
print(make_fibonacchi(n))

Python: n = int(input())

A = []
A.append(1)
A.append(1)

if n>1:
    for i in range(n-1):
        A.append(A[i]+A[i+1])

print(A[n])

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

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())

first = 1
second = 1
for i in range(n):
    second, first = first + second, second
print(val)

Python: n = int(input())
n1 = 1
n2 = 1
result = 0
if n < 2:
    result = 1
else:
    for i in range(n-1):
        result = n1 + n2
        n2 = n1
        n1 = result
print(result)

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))