Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [delphi] Рекурсия, Рекурсия массивов 
:(
    Опции темы
TwisT_X
Дата 18.10.2007, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


It's works!
**


Профиль
Группа: Участник
Сообщений: 293
Регистрация: 15.2.2005
Где: Earth

Репутация: 1
Всего: 4



Дан Н-мерный массив (неотсортированый).. Надо отсортировать методом разбиения/слияния..
Код для "слияния" у мну готов и работает на ура..

А вот с разбитием проблема: надо написать код с помошью рекурсии!!
А понять как рекурсия работает с массивами понять не могу..
Примерно должен быть такой код:

разбитие массива на два новых;
если разбитые массивы не более одного элемента то сортируем их "слиянием" инча
первый новый массив снова разбиваем;
второй новый массив снова разбиваем;

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

Подскажите плиз как правильно сдлетьа рекурсию!



--------------------
Если ты упадешь я буду рядом. (с) Асфальт
PM MAIL WWW   Вверх
TwisT_X
Дата 19.10.2007, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


It's works!
**


Профиль
Группа: Участник
Сообщений: 293
Регистрация: 15.2.2005
Где: Earth

Репутация: 1
Всего: 4



При таком масиве:     
  m1[0]:= 7;
  m1[1]:= 5;
  m1[2]:= 10;
  m1[3]:= 4;
  m1[4]:= 15;
  m1[5]:= 2;
  m1[6]:= 8;

и такой рекурсии:
Код

function TForm1.Razbitie(A:tmas): tmas;
var a1, a2: tmas;
begin
  SetLength(a1, length(A) div 2);
  Setlength(a2, length(A) - Length(a1));
  for i:= 0 to length(a1)-1 do a1[i]:= A[i];
  for i:= 0 to length(a2)-1 do a2[i]:= A[i+length(a1)];
  if (length(a1)=1) and (length(a2)=1) then result:= Slianie(a1, a2)
    else begin
      if length(a1)>1 then result:= Razbitie(a1)
        else if length(a2)>1 then result:= Razbitie(a2);
    end;
end;

овтвет: 10 и 5   =(

Да и еще один вопросег:   1 div 2 = ???

Это сообщение отредактировал(а) TwisT_X - 19.10.2007, 20:07


--------------------
Если ты упадешь я буду рядом. (с) Асфальт
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0762 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.