Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Для заданного целого числа n вычислить значение суммы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Ввод - вывод cBigNumber http://www.cyberforum.ru/cpp-beginners/thread619495.html
Подскажите кто нибудь несложный способ считывания с Edita в cBigNumber, обратно...
C++ Какая дополнительная память потребуется и как она связана с количеством исходных данных Такой вопрос, "Какая дополнительная память потребуется и как она связана с количеством исходных данных?" Допустим я заполнил массив из 100.000 рандомно, пусть int. Затем я сортирую этот массив. ... http://www.cyberforum.ru/cpp-beginners/thread619469.html
C++ Составить описание класса, обеспечивающего представление матрицы произвольного размера
вариант1 Условие задачи: Составить описание класса, обеспечивающего представление матрицы произвольного размера с возможностью изменения числа строк и столбцов, вывода на экран подматрицы любого...
Гистограмка = буутс + мап C++
Код компилируется. Но что то не так в свитч кейс лупе... НЕ правильно считает. См. принтскрин. Поскажите плиз где я накосячил. Заранее спасибо! // #include <boost/random.hpp> // Convenience...
C++ Класс ostream http://www.cyberforum.ru/cpp-beginners/thread619373.html
Как можно создать класс ostream? Такое ощущение, что кроме cout ничего из этого класса создать невозможно.
C++ Выводить на экран кубы первых 10 простых чисел написать прогаммы которые выводить на экран кубы первых 10 простых чисел подробнее

Показать сообщение отдельно
Thirteen
32 / 32 / 4
Регистрация: 04.07.2012
Сообщений: 50
06.07.2012, 21:57
Для n, вводимого с клавиатуры.
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
#include "iostream"
#include "iomanip"
 
using namespace std;
 
//const int n = 5;
 
double f(const int lv1, int sum, int n)
{
   double s;
   int i;
 
   if (lv1 == 0)
      return 1.0 / sum;
   else
   {
      s = 0;
      for (i=1; i<=n; i++)
{
         s = s + f(lv1 - 1, sum + i, n);
}
      return s;
   }
}
 
int main()
{
   int n;
   cout << "Input n = ";
   cin >> n;
   cout << setiosflags(ios::fixed | ios::showpoint) << setprecision(8)
          << f(n, 0, n) << endl;
 
   return 0;
}
Насчёт ускорения процесса, тут задача оптимизации.
Пока ничего не приходит в голову, как сделать алгоритм эффективнее.

Добавлено через 13 минут
Зашьём счётчик операций для интереса.

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
#include "iostream"
#include "iomanip"
 
using namespace std;
 
//const int n = 5;
int GlobalCounter = 0;
 
double f(const int lv1, int sum, int n)
{
   double s;
   int i;
 
   if (lv1 == 0)
      return 1.0 / sum;
   else
   {
      s = 0;
      for (i=1; i<=n; i++)
{
         cout << GlobalCounter++ << endl;
         s = s + f(lv1 - 1, sum + i, n);
 
}
      return s;
   }
}
 
int main()
{
   int n;
   cout << "Input n = ";
   cin >> n;
   cout << setiosflags(ios::fixed | ios::showpoint) << setprecision(8)
          << f(n, 0, n) << endl;
 
   return 0;
}
Ставим n = 10 и наслаждаемся.
2
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru