![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 02.04.2010
Сообщений: 12
|
![]()
Задание: Перечислить все способы представления заданного натурального числа в виде суммы монотонно убывающей последовательности натуральных чисел.
Например: 4=4 4=3+1 4=2+2 4=2+1+1 4=1+1+1+1 5=5 5=4+1 5=3+2 5=3+1+1 5=2+2+1 5=2+1+1+1 5=1+1+1+1+1 Нам нужно реализовать через рекурсию. вот что у меня получилось: #include <iostream> int n,h=0,q; using namespace std; void f(int k) { int m; if(k>q) {f(k-1); return;} h=0;m=k; while(k) { if(h+k+q<=n) {cout<<'+'<<k; h+=k;} else k--; } if(m>1){ cout<<'\n'<<n<<"="<<q; f(m-1);} } int main() { int i; cin>>n; for(i=0;i<n;i++) { q=n-i; cout<<n<<"="<<q; f(i);cout<<endl; } } ошибка в том что например для числа 6 он пропускает 1 строку. он пишет 6=2+2+2, а потом сразу 6=2+1+1+1+1. нету 6=2+2+1+1. Жду ваших советов по устранению этой ошибки. Последний раз редактировалось DarkMage; 31.03.2011 в 17:12. |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 04.02.2011
Сообщений: 260
|
![]()
конечно может и не самый лучший вариант, но зато работает
Код:
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Количетсво цифр натурального числа | Джиган | Помощь студентам | 3 | 13.03.2011 08:52 |
Разбиение натурального числа на 3 слагаемых | Neitrosha | Помощь студентам | 13 | 27.10.2010 18:45 |
Разложение натурального числа на простые множители (Delphi) | giga_person | Помощь студентам | 3 | 17.03.2010 16:24 |
Составить программу нахождения натурального числа n | livestrong | Помощь студентам | 14 | 24.12.2008 18:15 |
вывод на экран наибольшего делителя натурального числа N, меньше заданного натурального M | Fatality | Помощь студентам | 2 | 03.12.2008 23:27 |