Вверх ↑
Ответов: 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