Advertisement
Guest User

Untitled

a guest
Oct 17th, 2017
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.24 KB | None | 0 0
  1. // ConsoleApplication1.cpp: определяет точку входа для консольного приложения.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include <iostream>
  6.  
  7. using namespace std;
  8.  
  9. int fact(int);
  10. int fact_r(int);
  11. int fact_s(int);
  12. int fib_r(int);
  13. int fib_ar(int);
  14. int fib_arr(int);
  15. int fib_arr_mem(int);
  16. int sigma(int from, int to, int(*func)(int));
  17.  
  18. int main()
  19. {
  20.     char a;
  21.     int n, x;
  22.     cin >> x;
  23.     cout << "";
  24.     cin >> n;
  25.     switch (x) {
  26.  
  27.         case 1:
  28.         {
  29.             cout << fact(n);
  30.             break;
  31.         }
  32.         case 2:
  33.         {
  34.             cout << fact_s(n);
  35.             break;
  36.         }
  37.         case 3:
  38.         {
  39.             cout << fib_r(n);
  40.             break;
  41.         }
  42.         case 4:
  43.         {
  44.             cout << fib_ar(n);
  45.             break;
  46.         }
  47.         case 5:
  48.         {
  49.             cout << fib_arr(n);
  50.             break;
  51.         }
  52.         case 6:
  53.         {
  54.             cout << fib_arr_mem(n);
  55.             break;
  56.         }
  57.         case 7:
  58.         {
  59.             cout << sigma(1, n, fact_r);
  60.             break;
  61.         }
  62.     }
  63.  
  64.     cin >> a;
  65.     return 0;
  66. }
  67.  
  68. int fact(int n)
  69. {
  70.     int sum = 0;
  71.     int f = 1;
  72.     if (n < 0)
  73.         return 0;
  74.     for (int i = 1; i <= n; i++)
  75.     {
  76.         f = f * i;
  77.         sum = sum + f;
  78.     }
  79.     return sum;
  80. }
  81.  
  82. int fact_r(int n)
  83. {
  84.     if (n < 0)
  85.         return 0;
  86.     if (n <= 1)
  87.         return 1;
  88.     return n * fact_r(n-1);
  89. }
  90.  
  91. int fact_s(int n)
  92. {
  93.     if (n < 0)
  94.         return 0;
  95.     if (n <= 1)
  96.         return 1;
  97.     return fact_s(n - 1) + fact_r(n);
  98. }
  99.  
  100. int fib_r(int n)
  101. {
  102.     if (n <= 2 && n > 0)
  103.         return 1;
  104.     return fib_r(n - 1) + fib_r(n - 2);
  105. }
  106.  
  107. int fib_ar(int n)
  108. {
  109.     int* ar = new int[n];
  110.     ar[0] = 1;
  111.     ar[1] = 1;
  112.     for (int i = 2; i < n; i++)
  113.     {
  114.         ar[i] = ar[i - 1] + ar[i - 2];
  115.     }
  116.     return ar[n - 1];
  117. }
  118.  
  119. int fib_arr(int n)
  120. {
  121.     int* ar = new int[n];
  122.     for (int i = 0; i <= n; i++) {
  123.         ar[i] = 0;
  124.     }
  125.  
  126.     ar[0] = 1;
  127.     for (int i = 0; i - 2 < n && i - 2 < n; i++)
  128.     {
  129.         ar[i + 1] += ar[i];
  130.         ar[i + 2] += ar[i];
  131.     }
  132.     return ar[n - 1];
  133. }
  134.  
  135. int fib_arr_mem(int n)
  136. {
  137.     static int* ar = new int[n];
  138.     static int n_array;
  139.     static int f;
  140.     if (!f)
  141.     {
  142.         n_array = 2;
  143.         for (int i = 0; i <= n; i++)
  144.         {
  145.             ar[i] = 0;
  146.         }
  147.         ar[1] = 1;
  148.         ar[2] = 1;
  149.         f = 1;
  150.     }
  151.     if (n <= n_array)
  152.         return ar[n];
  153.     ar[n] = fib_arr_mem(n - 1) + fib_arr_mem(n - 2);
  154.     n_array = n > n_array ? n : n_array;
  155.     return ar[n];
  156. }
  157.  
  158. int sigma(int from, int to, int(*func)(int))
  159. {
  160.     int sum = 0;
  161.     while (from <= to)
  162.         sum += (*func)(from++);
  163.     return sum;
  164. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement