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

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

Вернуться   Форум программистов > Работа для программиста > Фриланс
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2008, 15:48   #1
Irdis
 
Регистрация: 05.04.2008
Сообщений: 6
Вопрос Как задать рекурсией?

Помогите с рекурсией, а то чет в голову не приходит как там сортировку рекурсией сделать. Прогу, вроде, выложил!
Irdis вне форума Ответить с цитированием
Старый 04.06.2008, 18:15   #2
begemotikdin
Пользователь
 
Аватар для begemotikdin
 
Регистрация: 17.12.2007
Сообщений: 36
По умолчанию

alexBlack, ага, спс!
Да мы кроме паскаля больше ничего и не видели))))

Ага, всё работает, толкьо вот одно но... прога вылетает как только в массив вводит одинаковые эллементы.... например две двойки!

сорри, сложение )))))))

Последний раз редактировалось Alex21; 05.06.2008 в 08:32.
begemotikdin вне форума Ответить с цитированием
Старый 06.06.2008, 11:15   #3
Irdis
 
Регистрация: 05.04.2008
Сообщений: 6
По умолчанию

Был косяк там один, уже не помню какой) Терь тругая трабла. Выдаёт повторяющиеся перестановки, при совпадении чисел массива...
Irdis вне форума Ответить с цитированием
Старый 06.06.2008, 11:53   #4
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Я и говорил, что без учета повторений.
Решение в лоб - не переставлять элементы, если такой уже был:

Код:
procedure getPermutation(A:TArray; M:integer);
var S:String;
    i, c, j:integer;
    b:boolean;
begin
   if M = 0 then begin
      S := '';
      for i:=0 to N do S := S + intToStr(A[i])+' ';
      form1.memo1.lines.add(S);
   end else begin
      for i:=M downto 0 do begin
        
        b := true;
        for j := i+1 to M do begin
           if a[j] = a[i] then begin
              b := false;
              break;
           end;
        end;
        if B then begin
        
           c := a[M]; a[M] := a[i]; a[i] := c;
           getPermutation(A, M-1);
           c := a[M]; a[M] := a[i]; a[i] := c;
        
        end;
        
      end;
   end;
end;

Последний раз редактировалось alexBlack; 06.06.2008 в 11:57.
alexBlack вне форума Ответить с цитированием
Старый 11.02.2010, 02:01   #5
PSix1_73
Пользователь
 
Регистрация: 12.05.2009
Сообщений: 30
По умолчанию

может кто и сдесь мне поможет
http://www.programmersforum.ru/showt...d=1#post456354
а то уже отчаился...
PSix1_73 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задать цикл Dagir БД в Delphi 1 01.09.2008 11:08
Помогите с рекурсией Serejka Общие вопросы Delphi 1 25.07.2008 15:36
Как задать множество 1234 Паскаль, Turbo Pascal, PascalABC.NET 7 25.05.2008 16:15
Паскаль. Задачка с рекурсией! Irdis Помощь студентам 10 14.04.2008 00:00
Помогите плз с Рекурсией Dendy Паскаль, Turbo Pascal, PascalABC.NET 4 03.02.2008 22:44