Вверх ↑
Ответов: 9906
Рейтинг: 351
#1: 2014-01-21 08:27:30 ЛС | профиль | цитата
Возвращаясь к пройденному.
Потому что понимание рекурсии в ООП - не самый тривиальный вопрос.
И копья-то мы ломали на эту тему. В свое время. Подзабыл я просто все эти диспуты....

Все, что говорил раньше, но в виде схемы:
Add(MainForm,2953706,427,168)
{
 Width=234
 Height=706
 Position=1
 link(onCreate,15485450:doRandomize,[(564,188)(564,153)])
}
Add(MultiElementEx,13059321,686,231)
{
 Mode=1
 Name="Sort"
 @IsLib=True
 link(Array,9304427:Array,[])
}
BEGIN_SDK
  Add(EditMultiEx,7479706,21,21)
  {
   WorkCount=#6:doSort|
   DataCount=#5:Array|
   Width=552
   Height=354
   VOffset=140
   HOffset=140
   link(doSort,4468939:doCompare,[])
  }
  Add(MultiElementEx,4736351,455,252)
  {
   elink(13059321)
   link(Array,7212801:Var2,[])
  }
  Add(MultiElementEx,2292698,399,259)
  {
   elink(13059321)
   link(Array,9438745:Var2,[])
  }
  Add(IntegerArray,16352659,455,84)
  {
   IntArray=[]
  }
  Add(IntegerArray,10517189,399,84)
  {
   IntArray=[]
  }
  Add(ArrayRW,813269,294,154)
  {
   link(Array,10669136:Var1,[(300,138)])
  }
  Add(ArrayRW,3150729,294,217)
  {
   link(Array,64932:Var1,[(300,201)])
  }
  Add(GetDataEx,7212801,455,133)
  {
   link(Data,16352659:Array,[])
  }
  Add(GetDataEx,9438745,399,196)
  {
   link(Data,10517189:Array,[])
  }
  Add(ArrayEnum,994920,161,161)
  {
   link(onItem,14688563:doSwitch,[])
   link(onEndEnum,10544971:doEvent1,[(221,174)(221,258)])
   link(Array,11124387:Var2,[])
  }
  Add(Switch,14688563,231,161)
  {
   Point(onOn)
   Point(onOff)
   link(onOn,813269:doAdd,[])
   link(onOff,3150729:doAdd,[(284,181)(284,237)])
  }
  Add(Hub,10544971,231,252)
  {
   OutCount=3
   link(onEvent1,4736351:doSort,[])
   link(onEvent2,2292698:doSort,[])
   link(onEvent3,7586658:doMerge,[])
  }
  Add(MultiElementEx,7586658,336,266)
  {
   @Hint=#37:Слияние двух отсортированных массивов|
   Name="Mrg"
   link(In1,64932:Var2,[])
   link(In2,10669136:Var2,[])
   link(Out,11124387:Var3,[(356,89)])
   AddHint(-78,49,178,26,@Hint)
  }
  BEGIN_SDK
    Add(EditMultiEx,517209,21,21)
    {
     WorkCount=#7:doMerge|
     DataCount=#3:In1|3:In2|3:Out|
    }
  END_SDK
  Add(GetDataEx,64932,336,196)
  {
   Angle=1
   link(Data,9438745:Var1,[])
  }
  Add(GetDataEx,10669136,343,133)
  {
   Angle=1
   link(Data,7212801:Var1,[])
  }
  Add(GetDataEx,11124387,161,84)
  {
   link(Data,7479706:Array,[])
  }
  Add(ArrayRW,14669575,77,112)
  {
   Point(Count)
   link(Array,11124387:Var1,[(83,89)])
  }
  Add(If_else,4468939,84,161)
  {
   Type=2
   Op2=Integer(1)
   link(onTrue,994920:doEnum,[])
   link(Op1,14669575:Count,[])
  }
END_SDK
Add(Edit,3522873,427,105)
{
 Width=226
 Align=2
 Text="100"
 DataType=1
 ClearAfterEnter=1
 Point(doSelectAll)
 link(onEnter,3614744:doEvent1,[])
}
Add(ListBox,9304427,672,112)
{
 Top=20
 Width=226
 Height=646
 Align=5
}
Add(Hub,3614744,490,112)
{
 OutCount=3
 link(onEvent1,3522873:doSelectAll,[(515,118)(515,97)(417,97)(417,125)])
 link(onEvent2,9304427:doClear,[])
 link(onEvent3,413181:doFor,[(515,132)(515,146)])
}
Add(For,413181,525,140)
{
 Start=1
 InData=0
 link(onEvent,15485450:doRandom,[])
}
Add(Random,15485450,588,140)
{
 Max=10000
 Quality=1
 link(onRandom,9304427:doAdd,[(627,146)(627,118)])
}
Add(Button,9551663,427,231)
{
 Left=420
 Top=230
 Align=4
 Caption="СОРТИРОВКА"
 link(onClick,13059321:doSort,[])
}

Вот, nesco, это есть решение рекурсивной задачи
Достаточно ли оно очевидно
По моему, так очевидней и некуда.


------------ Дoбавленo в 08.27:
А, да... Забыл добавить:
1) Схема незакончена, Содержимое мультика Mrg нарисуйте сами. И оно даже и заработает.
2) Ну и Вы помните: внутрь линка лучше не ходить - снег башка попадет. Возможно (я не ходил).
карма: 9

0