Advertisement
Petro_zzz

рекурсия

May 6th, 2024
704
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.42 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. long long factor(int n) {
  6.     cout << "call " << n << endl;
  7.     if (n <= 1)
  8.         return 1;
  9.     return n * factor(n - 1);
  10. }
  11.  
  12. long long factor2(int n) {
  13.     long long res = 1;
  14.     while (n > 1)
  15.         res *= n--;
  16.     return res;
  17. }
  18.  
  19. void show(int size, int arr[]) {
  20.     if (size == 0)
  21.         return;
  22.     cout << arr[0] << " ";
  23.     show(size - 1, arr+1);
  24. }
  25.  
  26. void show2(int size, int arr[]) {
  27.     if (size == 0)
  28.         return;
  29.     show(size - 1, arr);
  30.     cout << arr[size - 1] << " ";
  31. }
  32.  
  33. int get_pow(int x, int y) {
  34.     if (y == 0)
  35.         return 1;
  36.     return x * get_pow(x, y - 1);
  37. }
  38.  
  39. int fibo(int n) {
  40.     if (n < 2)
  41.         return 1;
  42.     return fibo(n - 1) + fibo(n - 2);
  43. }
  44.  
  45. int fibo2(int n) {
  46.     if (n < 2)
  47.         return 1;
  48.     int f_pred = 1;
  49.     int f_pred_pred = 1;
  50.     int f = 1;
  51.  
  52.     for (int k = 1; k < n; k++) {
  53.         f = f_pred + f_pred_pred;
  54.         f_pred_pred = f_pred;
  55.         f_pred = f;
  56.     }
  57.     return f;
  58. }
  59.  
  60.  
  61. void test_recursion() {
  62.     cout << "5! = " << factor(5) << endl;
  63.     cout << "5! = " << factor2(5) << endl;
  64.  
  65.     const int size = 5;
  66.     int arr[size]{ 501, 502, 503, 504, 505 };
  67.     show(size, arr);
  68.     cout << endl;
  69.     show2(size, arr);
  70.     cout << endl;
  71.  
  72.     cout << get_pow(3, 4) << endl;
  73.     //3*3*3*3 = 9 * 9 = 81
  74.    
  75.     for (int n = 1; n < 20; n++) {
  76.         cout << (double)fibo(n) / fibo(n-1) << " ";
  77.     }
  78.     cout << endl;
  79.  
  80.     for (int n = 0; n < 20; n++) {
  81.         cout << fibo2(n) << " ";
  82.     }
  83.     cout << endl;
  84. }
  85.  
  86. int main() {
  87.     test_recursion();
  88.     return 0;
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement