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

Вычислить произведение по заданной формуле, не используя массивы (рекурсивная функция)

21.10.2016, 14:47. Показов 1091. Ответов 2
Метки нет (Все метки)

не получается разобраться с алгоритмом
Вычислить произведение по заданной формуле, не используя массивы (рекурсивная функция)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.10.2016, 14:47
Ответы с готовыми решениями:

Рекурсивная функция для вычисления по заданной формуле
Напишите функцию, вычисляющую xn без использования цикла, где n – некоторое натуральное число,...

Вычислить произведение ряда по заданной формуле
Нужно вычислить и вывести на экран, C++

Вычислить произведение элементов последовательности по заданной формуле

Вычислить произведение по заданной формуле
Дано натурально число n. Вычислить. P=(1-1/2^2) (1-1/3^2)...(1-1/n^2) где n>2.

2
Модератор
Эксперт С++
10519 / 8746 / 5286
Регистрация: 18.12.2011
Сообщений: 23,394
21.10.2016, 14:53 2
Лучший ответ Сообщение было отмечено ruskape как решение

Решение

Терпеть ненавижу рекурсивные функции, а рекуррентно получается так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
double P()
{
    double w1=0.3,w2=0.5;
    double p=1.0;
    for(int i=1;i<=50;i++)
    {
           double w3=i+sin(w1)-cos(w2);
           p*=w3;
           w1=w2;
           w2=w3;
    }
    return p;
}
0
Программист
307 / 182 / 176
Регистрация: 05.12.2013
Сообщений: 683
Записей в блоге: 5
21.10.2016, 15:02 3
C++
1
2
3
4
5
6
7
double W(int i)
{
    if(i<1) return 0;
    if(i==1) return 0.3;
    if(i==2) return 0.5;
    return i+sin(W(i-1))-cos(W(i-2));
}
Добавлено через 6 минут
Процесс очень медленный, рекурсия и правда тут все портит.
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
#include "stdafx.h"
#include <iostream>
#include <cmath>
 
using namespace std;
 
double W(int i)
{
    if(i<1) return 0;
    if(i==1) return 0.3;
    if(i==2) return 0.5;
    return i+sin(W(i-1))-cos(W(i-2));
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    double p=1;
    for(int i=1;i<=50;i++){
        double w=W(i);
        p*=w;
        cout<<"W("<<i<<") = "<<w<<endl;
    }
    cout<<"P = "<<p<<endl;
    system("pause");
    return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.10.2016, 15:02

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Программа для расчета скалярного произведения векторов по заданной формуле, используя массивы
Даны два вектора X и Y состоящие из N компонентов {Xn} и {Yn}, вычислить скалярное произведение по...

Написать программу, в которой будет описана рекурсивная функция вычисления значения по формуле
Помогите очень надо создать рекурсивную функцию в которой будет производится вычисление значения по...

Рекурсивная функция вычисляющая произведение элементов массива
Сделать рекурсивную ф-цию вычисления умножения эллементов одномерного массива

Рекурсивная функция: найти член последовательности, заданной формулой
Вывести через пробел значения рекурсивной функции при значениях аргумента от 1 до 10 включительно. ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.