IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Рекурсия, разложить число
Nike0
сообщение 6.12.2009 15:42
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 61
Пол: Мужской
Реальное имя: Илья

Репутация: -  0  +


Помогите пжлста с решением 1 задачки. Вычислите количество различных представлений заданного натурального числа n в виде суммы не менее двух попарно различных натуральных слагаемых. Представления, отличающиеся лишь порядком слагаемых, различными не считаются. Если можете чем-нибудь помочь, пишите, может мне надо толчок какой-то чтобы сам додумал.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Lapp
сообщение 6.12.2009 19:29
Сообщение #2


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Nike0 @ 6.12.2009 15:42) *
пишите, может мне надо толчок какой-то чтобы сам додумал.
Насчет толчка..
Скажем, так: в рекурсивную процедуру передаешь два параметра: наибольшее из использованных слагаемых и остаток числа. А в процедуре, если остаток нулевой - печатаешь число, если нет - расщепляешь на два в цикле от первого параметра до второго. Первое из полученных чисел записываешь в массив, а второе передаешь рекурсивно вместе с увеличенным на 1 первым параметром. Типа так..

Вот код, но я в нем специально убрал один оператор, так что он не совсем рабочий. Сможешь разобраться, как починить? Если нет - задавай вопросы.. Если да - напиши, чего не хватает (для потомков smile.gif).
const
m=1000;
var
a: array[1..m]of integer;
k,n: integer;

procedure Split(j,n: integer);
var
i: integer;
begin
if (n=0)and(k>1) then begin
for i:=1 to k do Write(a[i]:4);
WriteLn
end
else for i:=j to n do begin
Inc(k);
a[k]:=i;
Dec(k)
end
end;

begin
Write('n = ');
ReadLn(n);
k:=0;
Split(1,n);
ReadLn
end.


Успехов! smile.gif


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Nike0   Рекурсия   6.12.2009 15:42
Lapp   пишите, может мне надо толчок какой-то чтобы сам д...   6.12.2009 19:29
Nike0   Вот код, но я в нем специально убрал один оператор...   7.12.2009 20:57
Lapp   я так понял что рекурсия это такая штука, которая ...   7.12.2009 23:14
Nike0   В рекурсии обычно существенно, что параметры изме...   8.12.2009 10:38
volvo   Если Split поставить после уменьшения K, то параме...   8.12.2009 10:52
Nike0   Сначала увеличили, потом уменьшили, что поменялос...   8.12.2009 22:42
Lapp   кстати, когда поставил Split куда надо, его надо с...   9.12.2009 3:12
Nike0   Внимательно прочитай мои пояснения и сделай вывод...   20.12.2009 12:58
Lapp   P.S. но все-таки это решение не удовлетворяет моем...   20.12.2009 14:32
volvo   А ты перед тем как печатать массив, пройди по нему...   20.12.2009 13:07
Nike0   то что я неделю делал время не позволяло, сложный...   21.12.2009 12:32
Nike0   думать то подумал, вроде все хорошо работает, тепе...   21.12.2009 12:57
Lapp   думать то подумал, вроде все хорошо работает, тепе...   21.12.2009 13:05
Nike0   Split(j+1,n-i)? у меня ничего не изменилось, или ...   21.12.2009 13:12
Lapp   Split(j+1,n-i)? у меня ничего не изменилось, или я...   21.12.2009 13:19
Nike0   о Госпади, я это сделал( точнее Вы сделали) :) :...   21.12.2009 13:37
Lapp   о Госпади, я это сделал( точнее Вы сделали) :) :)...   21.12.2009 13:42
Nike0   думаю эту тему можно закрывать, все по полочкам мн...   21.12.2009 13:56


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 18.07.2025 5:19
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"