![]() |

/---------------- | Приемы кодинга | ----------------/ Экскурсия в рекурсию (ц)Радиолюбитель ВК И так, что за зверь такой рекурсия и с чем его едят ? Рекурсия- ето есть вызов программой сямой себя. Значит простейшая рекурсия- 10 GO SUB 10 . Однако из рекурсии должен быть какойлибо выход, иначе какой же тогда в ней смысл ? Кстати, забыл сказать, что переменные моей процедуры не мои переменные (ц)Кто-то из великих.Обыдно, но в васике нету такой фигни, которая сохраняла бы переменные, по этому перейдем на ПАСЦАЛ. Program recursion; Procedure rec(n:integer); Begin If n>1 then rec(n-1); WriteLn(n) End; (* Main *) Begin Rec(10) End. Результат: 10 9 8 7 6 5 4 3 2 1 Но ПАСЦАЛ потому и ПАСЦАЛ, что даже на писюке на нем ничего на делают, и по этому перейдем на ассемблер. "Рекурсия на ассемблере ??? %-|",- Спро- сите вы. "Ага, а почему бы и нет",- отвечу я. Нет ничего невозможного. Для примера и для продолжения темы приведу вам маленькую библиотечку печати. Точка входа: BPR, номер функции в гС. Let's go ! BPR PUSH ВС,DE,HL,AF LD A,С СР 1 JR NZ,BPR0 POP AF PUSH AF RST #10 BPR_ POP AF,HL,DE,ВС RET BPR0 СР 2 JR NZ,BPR1 LD A,22 LD С,1 CALL BPR ;А ВОТ ТЕ И РЕКУРСИЯ LD A,D CALL BPR LD A,Е JR BPR BPR1 LD A,(HL) AND (HL) JR Z,BPR_ LD С,1 CALL BPR JR BPR1 1:Печать символов. A = символ. 2:Установка печати. В D = X, Е = Y. 3:Печать текста, в HL = адресс текста, 0 - маркер конца. Похоже, это все :)
Other articles:
|
|
|
|
|
|
|
|
|
Similar articles:
В этот день... 1 April
Info Guide #13,
ACNews #50,
Avro News #01,
ACNews #47,
ACNews #40,
ACNews #29,
Black Metall #01,
ACNews #16,
Adventurer #13,
Polesse #19,
Subliminal Extacy #03,
ZX Pilot #37,
Always #03,
Born Dead #0G,
Odyssey paper #08,
Optron #26,
City #08,
Zodiac #02,
Polesse #05,
Nicron #108,
X-Magazine #10,
Nicron #82,
Energy #01,
Sorrow News #03,
Sorrow News #02,
Proton #27,
Think #08,
Wallpaper #01,
Spectrum Progress #03,
Spectrum Expert #02,
Micro #01,
X-Files #02,
Gorodok #05,
Deja Vu #04,
Anecdotes #01,
X-Files #02,
Maximum #35,
Impulse #01,
Spectrofun #01,
Faultless #07,
Breeze #06,
Nicron #27,
Echo #03,
Oberon #01,
Spectrofon #19,
On-Line #30,
Sinclair Town #01,
Sinclair Classic #04,
Spectrofon #04