Advertisement
Guest User

Fibo

a guest
Feb 18th, 2020
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.91 KB | None | 0 0
  1. // Рекурсия. <<Разделяй и властвуй>>
  2. // F_n = F_(n-1) +F_(n-2), F_0 = 0, F_1 = 1
  3. #include <iostream>
  4.  
  5. int fibo1(int n) {
  6.     if(n == 0) return 0;
  7.     if(n == 1) return 1;
  8.     return fibo1(n-1) + fibo1(n-2);   //Простая версия с понятной реализацией, но проблемой с повторным вычислением
  9. }
  10.  
  11. int fibo(int n) {
  12.     const int MAXN = 1000; //Выбрали размер максимальный
  13.     static int c[MAXN];     //Создали массив куда будем запоминать вычисления
  14.     if(n == 0) return 0;
  15.     if(n == 1) return 1;
  16.     if(c[n]>0) return c[n];    //Если уже записали то просто это и вернем
  17.     return c[n] = fibo(n-1) + fibo(n-2);   //Иначе вычислим и запишем
  18.  
  19.  
  20. }
  21.  
  22.  
  23. int main()
  24. {
  25.     std::cout <<fibo(6);
  26.     return 0;
  27. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement