Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.05.2012, 11:44   #1
Proskurina
Форумчанин
 
Регистрация: 27.05.2012
Сообщений: 109
По умолчанию Написать рекурсивную процедуру генерации всех перестановок чисел от 1 до n

Написать рекурсивную процедуру генерации всех перестановок чисел от 1 до n
Proskurina вне форума Ответить с цитированием
Старый 30.05.2012, 12:02   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

задача как-то криво сформулирована.
А что такое "перестановка числа" ?!

например, перестановка числа 29 чему равна?! а числа 3575 ?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.06.2012, 19:03   #3
Reisch_Helena
 
Регистрация: 30.05.2012
Сообщений: 8
По умолчанию

Цитата:
перестановка числа 29 чему равна?!
29
92

Цитата:
а числа 3575 ?
3575
5375
7535
7355..
Reisch_Helena вне форума Ответить с цитированием
Старый 02.06.2012, 19:41   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
var s:string;j,i:integer;
begin
 s:='12345';
 for i:=1 to Length(s) do begin
  for j:=1 to Length(s) do begin
   write(s[(j+i) mod length(s)+1]);
  end; writeln;
 end;
 readln;
  { TODO -oUser -cConsole Main : Insert code here }
end.
Пойдет?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.06.2012, 18:45   #5
Reisch_Helena
 
Регистрация: 30.05.2012
Сообщений: 8
По умолчанию

в этой задаче как я поняла, должна быть процедура, вызывающая внутри себя, себя же. это и будет рекурсия
Reisch_Helena вне форума Ответить с цитированием
Старый 04.06.2012, 10:34   #6
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Цитата:
Сообщение от Reisch_Helena Посмотреть сообщение
в этой задаче как я поняла, должна быть процедура, вызывающая внутри себя, себя же. это и будет рекурсия
Посмотри вот эту тему, пост №13

Добавлено:
Там потребуется изменение. Вместо простой строки надо поставить массив чисел от 1 до n. Если хочешь, могу написать главное..

Ну, внес я нужные изменения, чтоб работала не со строкой, а с массивом чисел.. В результате, ессно, все равно запускать ее для n больше 9 - бессмысленно, потому как слишком долго . А если работать для n<=9, то это - цифры, и можно использовать тот код без изменений, написав нужную строку (типа '123456' для n=6). Ладно, короче, вот код с массивом чисел:
Код:
const
  n= 8;

type
  tA= array[1..n] of word;

procedure Permute(a: tA; p: word);
var
  i,b: word;
begin
  if p=n then begin
    for i:=1 to n do write(a[i]:3);
    writeln
  end
  else begin
    b:= a[p];
    for i:=p to n do begin
      a[p]:= a[i];
      a[i]:= b;
      Permute(a,p+1);
      a[i]:= a[p]
    end
  end
end;

var
  i: word;
  a: tA;

begin
  for i:=1 to n do a[i]:= i;
  Permute(a,1)
end.
Предпочитаю на "ты".

Последний раз редактировалось Stilet; 04.06.2012 в 13:44.
TinMan вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Написать задачу по нахождению всех возможных чисел alannmag Паскаль, Turbo Pascal, PascalABC.NET 0 14.05.2012 20:31
Написать рекурсивную процедуру для ввода с клавиатуры последовательности чи-сел (конец ввода – 0) и вывода её на экран в обратном netiv Паскаль, Turbo Pascal, PascalABC.NET 1 17.02.2012 18:14
Прерывание генерации перестановок Goombold Паскаль, Turbo Pascal, PascalABC.NET 0 26.05.2011 10:21
Генерация всех перестановок массива aly-lucenko Помощь студентам 4 28.04.2011 14:14
Генерация всех перестановок 10-элементного множества aly-lucenko Помощь студентам 0 17.04.2011 20:04