Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <locale.h>
- #include <cmath> // чтобы работали функции sin и cos
- using namespace std;
- double sum(int *b, int i, int j) {
- if (i == j) { // если мы делили-делили массив пополам, то у нас в крнце концов получится массив из одного элемента
- return sin(b[i])*cos(b[i]); // в таком случае возвращаем произведение синуса и косинуса этого элемента
- }else return sum(b, i, (j+i) / 2) + sum(b, (j+i) / 2 + 1, j); // иначе запускаем 2 рекурсии. Одна идёт до среднего элемента, вторая от среднего и до конца.
- } // формула (j+i)/2 из матеши. это позиция среднего элемента на отрезке. Когда запускаем вторую рекурсию там (j+i)/2+1 (т е смотрим элементы после среднего), т к мы уже посмотрели средний элемент в первой рекурсии
- int main()
- {
- setlocale(LC_ALL, "Russian"); // русский
- int n; // создаём переменную для количества элементов
- cout << "Введите количество элементов" << endl;
- cin >> n;
- cout << "Введите элементы массива" << endl;
- int *b = new int[n]; // создаём массив размером n
- for (int i = 0; i < n; i++) { // вводим массив
- cin >> b[i];
- }
- cout << sum(b, 0, n - 1); // запускаем рекурсию. Передаём сам массив и от какого до какого элемента запускаем рекурсию
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement