Problem:
MathJax.Hub.Config({ tex2jax: { inlineMath: [["$","$"], ["\\(","\\)"]], processEscapes: true }});

Fibonacci Number

Write a program which prints $n$-th fibonacci number for a given integer $n$. The $n$-th fibonacci number is defined by the following recursive formula:

\begin{equation*}
fib(n)= \left \{
\begin{array}{ll}
1　 & (n = 0) \\
1　 & (n = 1) \\
fib(n - 1) + fib(n - 2) & \\
\end{array}
\right.
\end{equation*}

Input

An integer $n$ is given.

output

Print the $n$-th fibonacci number in a line.

Constraints

$0 \leq n \leq 44$

Sample Input 1

3

Sample Output 1

3

Solution in C (judge verdict: Time Limit Exceeded)

#include <stdbool.h>
#include <stdint.h>

#define MEM_SIZE 500
static int64_t fib_mem[MEM_SIZE];

int64_t fibonacchi_number(int64_t n)
{
  static bool initialized = false;
  if (!initialized) {
    uint32_t i;
    for (i = 0; i < MEM_SIZE; i++) {
      fib_mem[i] = -1;
    }
    initialized = true;
  }

  if (n == 0)
    return fib_mem[n] = 1;
  else if (n == 1)
    return fib_mem[n] = 1;
  else {
    if (fib_mem[n] != -1)
      return fib_mem[n];
    else
      return fibonacchi_number(n - 1) + fibonacchi_number(n - 2);
  }
}

#if !defined(TEST)
#include <stdio.h>
int32_t main(void)
{
  int32_t n;
  scanf("%d", &n);
  printf("%ld\n", fibonacchi_number(n));
  return 0;
}
#endif