Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 09.06.2015
Сообщений: 14
1

Рекурсивно вычислить сумму квадратов тех чисел, не превосходящих двух

03.07.2015, 17:42. Показов 1259. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Пусть https://www.cyberforum.ru/cgi-bin/latex.cgi?{a}_{0}={cos(1)}^{2}; {a}_{1}={-sin(1)}^{2}; {a}_{k}=2*{a}_{k-1}-{a}_{k-2}; k=2,3...
Найти сумму квадратов тех чисел https://www.cyberforum.ru/cgi-bin/latex.cgi?{a}_{1}, ... , {a}_{100}, которые не превосходят двух, с помощью рекурсии.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include "stdafx.h"
#include "conio.h"
#include "locale.h"
#include "stdlib.h"
#include "string"
 
double rekyrsia(int n)
{
    static int i = 0;
    static double sum = 0, a0, a1 = pow(-sin(1), 2);
    double a;
    if (i == 0)
    {
        a0 = pow(cos(1), 2);
        a1 = pow(-sin(1), 2);
        a = a1;
        sum = pow(a, 2);
    }
    //else return i;
    else
    {
        a = 2 * a1 - a0;
        if (a <= 2)
            sum = sum + pow(a, 2);
    }
    i++;
    if (i >= n)
    {
        a = 0, i = 0; return sum;
    }
    else return rekyrsia(n);
}
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "Russian");
    int n;
    printf("Введите n: ");
    scanf_s("%i", &n);
    printf("Сумма: %lg", rekyrsia(n));
    _getch();
    return 0;
}
Помогите исправить код, чтобы программа правильно вычисляла https://www.cyberforum.ru/cgi-bin/latex.cgi?{a}_{k}.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.07.2015, 17:42
Ответы с готовыми решениями:

Рекурсивно вычислить сумму квадратов чисел
Пусть {a}_{0}={cos(1)}^{2}; {a}_{1}={-sin(1)}^{2}; {a}_{k}=2*{a}_{k-1}-{a}_{k-2}; k=2,3... Найти...

Найти сумму квадратов тех чисел a[0],...,a[20], которые не превосходят двух
Здравствуйте, всем доброго времени суток. помогите пожалуйсто с вот этим заданием: Пусть...

Вычислить сумму квадратов тех чисел, модуль которых больше значения 2.5
Вычислить сумму квадратов тех чисел, модуль которых больше значения 2.5 Размер массива 10 Ввиде...

Массив: Вычислить сумму квадратов тех чисел, модуль которых превышает значение 2.5
Есть задачка: Вычислить сумму квадратов тех чисел, модуль которых превышает значение 2.5 Все...

2
Просто Лис
Эксперт Python
5731 / 3530 / 1055
Регистрация: 17.05.2012
Сообщений: 10,359
Записей в блоге: 9
03.07.2015, 19:00 2
C++
1
2
3
4
5
double rekyrsia(int k){
  if (k==0) return pow(cos(1), 2);
  if (k==1) return pow(-sin(1), 2);
  return 2*rekyrsia(k-1)-rekyrsia(k-2);
}
0
52 / 52 / 23
Регистрация: 01.06.2015
Сообщений: 189
03.07.2015, 21:28 3
Цитата Сообщение от NimbJles Посмотреть сообщение
чтобы программа правильно вычисляла
Возможно, проблема в: pow(-sin(1), 2), скорее всего, нужно -pow(sin(1), 2)

Добавлено через 1 час 51 минуту
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
C++
1
2
3
4
5
double rekyrsia(int k){
  if (k==0) return pow(cos(1), 2);
  if (k==1) return pow(-sin(1), 2);
  return 2*rekyrsia(k-1)-rekyrsia(k-2);
}
Это не есть правильный подход для решения такой задачи.
При таком подходе, чтоб посчитать а20, нужно будет 21891 раз вызвать функцию rekyrsia, а21 - 35421 и а22 - 57313.

Правильнее будет что-то подобное:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
double rekyrsia( double a1, double a2, int k){
    if(k<=0){
        return 0;
    }
    double sum=rekyrsia(a2,2*a2-a1,k-1);
    if(a2<=2){
        sum+=pow(a2,2);
    }
    return sum;
}
 
// считает сумму квадратов, которые не превосходят двух, начиная от а1 и до ak включительно
double summ(int k){
    return rekyrsia( pow(cos(1), 2), -pow(sin(1), 2) , k );
}
 
int _tmain(int argc, _TCHAR* argv[]){
    printf("Result = %lf\n", summ(100) );
}
Тут вызовов rekyrsia будет k+1
1
03.07.2015, 21:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.07.2015, 21:28
Помогаю со студенческими работами здесь

Вычислить сумму квадратов натуральных чисел до тех пор, пока квадрат очередного числа не превысит 81
Помогите пожалуйста решить задачи: 1) Вычислить сумму квадратов натуральных чисел до тех пор, пока...

Для двух вводимых пользователем чисел, вычислить сумму их квадратов
Для двух вводимых пользователем чисел, вычислить сумму их квадратов или разность их кубов в...

Циклы с постусловием и предусловием. Вычислить сумму квадратов натуральных чисел до тех пор, пока квадрат очередного числа не превысит 81
Практическая работа Задание 2. Вычислить сумму квадратов натуральных чисел до тех пор, пока...

Осуществить ввод последовательности целых чисел в количестве не меньшем двух. Вычислить сумму тех из них...
Осуществить ввод последовательности целых чисел в количестве не меньшем двух. Вычислить сумму тех...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru