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

Рекурсия, разложение на слогаемые - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Линейный двусвязный список http://www.cyberforum.ru/cpp-beginners/thread426008.html
Задали задачу, реализовать линейный двусвязный список, и функцию к нему - удаление узла. Читал литературу, правда в спешке, искал по форуму и просто голова кругом: узел это просто число, или это...
C++ Стек из списка Здравствуйте, обращаюсь за помощью не в первый раз, всегда помогали, отдельное спасибо. Задача такая. Реализовать стек с помощью списка и осуществить добавление элементов, ну и просмотр. Я лентяй,... http://www.cyberforum.ru/cpp-beginners/thread426007.html
Комментарии к коду C++
Имеются ряд вопросов по коду. 1.Что нужно переделать ,для того чтобы добавить шаблоны? 2. Прокомментируйте пожалуйста код. Заранее благодарен.
C++ Вычислить произведение компонент вектора размером 5
Не могу выполнить Выяснить, в любой из строк матрицы размера 4x5 хотя бы один нулевой элемент. Воспользоваться функцией, которая вычисляет произведение компонент вектора размером 5.
C++ Многофайловые программы http://www.cyberforum.ru/cpp-beginners/thread425991.html
Цитата: «В проэкты включаються только файлы исходного кода, а не заголовочные файлы. В интегрированных средах разработки программ не следует добавлять заголовочные файлы к списку проэкта (project ...
C++ Удаление из строки s все последовательности трёх букв ABC Только начал освоивать язык С и не могу выполнить задачу Нужно удалить из строки символов s все последователности трёх латинских букв ABC на языке С! подробнее

Показать сообщение отдельно
Рулик
8 / 8 / 0
Регистрация: 14.11.2011
Сообщений: 54

Рекурсия, разложение на слогаемые - C++

11.01.2012, 05:51. Просмотров 476. Ответов 1
Метки (Все метки)

Нужно подсчитать количество возможных разложение числа на сумму слагаемых количеством больше двух.
Мы водим число и получаем количество представлений.
p(1) = 1
p(2) = 2
p(3) = 3
p(4) = 5
p(5) = 7
p(6) = 11
p(7) = 15
p(8) = 22
p(9) = 30
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
#include "stdafx.h"
#include <iostream>
 
using namespace std;
 
int N,K=0;
int number(int);
void main(){
    setlocale(0,"");
    do{
        cout<<"Введите число - ";
        cin>>N;
        if(N<=0)
            cout<<"\nЧисло должно быть больше нуля\n";
    }while(N<=0);
    if(N<=1)
        cout<<"Число нельзя разложить на слогаемые";
    else
        cout<<"Количество представлений ="<<number(N)<<endl;
    system("pause");
}
 
int number(int N){
    int M=0,K=0;
    while(N>=M){
    N--;
    M++;
    K++;
        if(M<N){
            if(N>1)
                K+=number(N);
            if(M>1)
                K+=number(M);
        }   
    }
    return K;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru