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

Для заданного целого числа 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
09.07.2012, 09:52
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
43
44
45
46
47
48
49
#include "iostream"
#include "iomanip"
 
using namespace std;
 
//const int n = 5;
 
double f(const int lv1, int sum, int n) //Рекурсивная функция для вычисления суммы
//Принимает аргументы: lv1 - уровень цикла, sum - эту сумму мы передаём рекурсивно
//n - сколько раз суммировать.
{
   double s; //Посчитанная сумма
   int i; //Просто счётчик
 
   if (lv1 == 0)           //Если уровень цикла нулевой,
      return 1.0 / sum; //то выводим 1/сумму.
   else
   {
      s = 0;
      for (i=1; i<=n; i++) //Цикл, как и полагается от 0 до n
{
         s = s + f(lv1 - 1, sum + i, n); //Рекурсивный вызов с уменьшением уровня цикла и
                                                 //увеличиваем сумму на итерацию.
//Подробнее, что происходит:
//Допустим n = 3. Мы сначала вызвали f(3,0,3)
//Программа заходит в f, смотрит, уровень цикла не ноль (lv1!=0), значит надо войти в цикл
//и вызвать рекурсивно функцию, уменьшив при этом уровень на 1 и увеличив sum на итерацию
//то есть происходит вызов f(2,1,3)
//Дальше опять уровень не ноль, вызов f(1,2,3)
//Наконец происходит f(0,3,3) там уже уровень цикла 0, потому функция считает 1/sum
//и возвращает управление. И тут начинается самое интересное, функция возвращает управление
//туда, откуда произошёл вызов рекурсии. То есть в цикл. И выполняется рекурсивный вызов уже для
//i = 2. И так далее всё это происходит пока все циклы не кончатся. Тогда функция вернёт уже s,
//в которой хранится результат всех сложений во всех циклах.
}
      return s; //Вот прямо здесь и вернёт
   }
}
 
int main() //Это просто тест для f.
{
   int n; //Будем вводить с клавиатуры
   cout << "Input n = ";
   cin >> n;
   cout << setiosflags(ios::fixed | ios::showpoint) << setprecision(8)
          << f(n, 0, n) << endl; //Выведем сумму.
 
   return 0;
}
Что-то непонятно?
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru