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 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 8.12.2009 10:52
Сообщение #2


Гость






Цитата
ну раз параметры изменяются перед вызовом процедуры, то Split нужно поставить после уменьшения k
Если Split поставить после уменьшения K, то параметры не очень-то и изменяются, тебе не кажется? Сначала увеличили, потом уменьшили, что поменялось?
 К началу страницы 
+ Ответить 
Nike0
сообщение 8.12.2009 22:42
Сообщение #3


Пионер
**

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

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


Цитата(volvo @ 8.12.2009 9:52) *

Сначала увеличили, потом уменьшили, что поменялось?

ничего... что-то я сморозил... кстати, когда поставил Split куда надо, его надо с какими параметрами записывать? Split(j,n)?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 9.12.2009 3:12
Сообщение #4


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

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

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


Цитата(Nike0 @ 8.12.2009 22:42) *
кстати, когда поставил Split куда надо, его надо с какими параметрами записывать? Split(j,n)?
Хороший вопрос! Я его переадресую тебе.. smile.gif
Внимательно прочитай мои пояснения (см. выше) и сделай выводы.

P.S.
Кто-то что-то говорил о "толчке", а теперь не хочет минутку подумать..


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Nike0
сообщение 20.12.2009 12:58
Сообщение #5


Пионер
**

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

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


Цитата(Lapp @ 9.12.2009 2:12) *

Внимательно прочитай мои пояснения и сделай выводы.

выводы сделал, подумал, и написал) вся загвоздка была в том, что надо было из данного числа отнять слагаемое и все)
вот рабочий код

Program L11_26_1;
uses
crt;
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;
Split(j,n-i);
Dec(k);
end;
end;

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



P.S. но все-таки это решение не удовлетворяет моему условию:
нужно найти количество(тут просто, счетчик вставлю) различных представлений заданного натурального числа n в виде суммы не менее двух ПОПАРНО РАЗЛИЧНЫХ натуральных слагаемых. Представления, ОТЛИЧАЮЩИЕСЯ ЛИШЬ ПОРЯДКОМ слагаемых, различными не считаются. Вот тут поподробнее, какое условие надо написать, чтобы учитывался порядок слагаемых?
 Оффлайн  Профиль  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 10:09
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"