Advertisement
codegod313

Order3

Nov 26th, 2019
224
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.78 KB | None | 0 0
  1. #include <iostream>
  2. #include <locale.h>
  3. #include <cmath> // чтобы работали функции sin и cos
  4.  
  5. using namespace std;
  6.  
  7. double sum(int *b, int i, int j) {
  8.     if (i == j) { // если мы делили-делили массив пополам, то у нас в крнце концов получится массив из одного элемента
  9.         return sin(b[i])*cos(b[i]); // в таком случае возвращаем произведение синуса и косинуса этого элемента
  10.     }else return sum(b, i, (j+i) / 2) + sum(b, (j+i) / 2 + 1, j); // иначе запускаем 2 рекурсии. Одна идёт до среднего элемента, вторая от среднего и до конца.
  11. } // формула (j+i)/2 из матеши. это позиция среднего элемента на отрезке. Когда запускаем вторую рекурсию там (j+i)/2+1 (т е смотрим элементы после среднего), т к мы уже посмотрели средний элемент в первой рекурсии
  12.  
  13. int main()
  14. {
  15.     setlocale(LC_ALL, "Russian"); // русский
  16.     int n; // создаём переменную для количества элементов
  17.     cout << "Введите количество элементов" << endl;
  18.     cin >> n;
  19.     cout << "Введите элементы массива" << endl;
  20.     int *b = new int[n]; // создаём массив размером n
  21.     for (int i = 0; i < n; i++) { // вводим массив
  22.         cin >> b[i];
  23.     }
  24.     cout << sum(b, 0, n - 1); // запускаем рекурсию. Передаём сам массив и от какого до какого элемента запускаем рекурсию
  25. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement