fork download
  1. #include <iostream>
  2.  
  3. unsigned long long fib_iter(unsigned long long n)
  4. {
  5. unsigned long long n1 = 0;
  6. unsigned long long n2 = 1;
  7. unsigned long long temp = 0;
  8.  
  9. while ( --n )
  10. {
  11. temp = n2;
  12. n2 = n1 + n2;
  13. n1 = temp;
  14. }
  15.  
  16. return n2;
  17. }
  18.  
  19. unsigned long long fib_rek(unsigned long long n)
  20. {
  21. if ( n <= 1 )
  22. return n;
  23. else
  24. return fib_rek(n-1) + fib_rek(n-2);
  25. }
  26.  
  27. unsigned long long fib_tail_(unsigned long long n, unsigned long long f1, unsigned long long f2)
  28. {
  29. if ( n == 0 )
  30. return f2;
  31. else
  32. return fib_tail_(n-1, f2, f1+f2);
  33. }
  34.  
  35. unsigned long long fib_tail(unsigned long long n)
  36. {
  37. return fib_tail_(n, 1, 0);
  38. }
  39.  
  40. int main()
  41. {
  42. std::cout << "Iter: " << fib_iter(48) << std::endl;
  43. std::cout << "Rek_Tail: " << fib_tail(48) << std::endl;
  44. std::cout << "Rek: " << fib_rek(48) << std::endl;
  45.  
  46. return 0x0;
  47. }
Time limit exceeded #stdin #stdout 5s 2680KB
stdin
Standard input is empty
stdout
Iter:     4807526976
Rek_Tail: 4807526976