View Full Version : Rekursiv funkcia
hi,
pojalusta raskajite ne mnojko kak realisuetsya rekursivnaya funkcianaprimer v C++ ili PHP ili chto to vrode etovo.
если я правильно понял вопрос то вот пример:
float power( float number,int n)
{
if(n==1) return number; //число в степени 1 это само число
return number*power(number,n-1);
}
для того чтоб получить число в степени n умножаем число на себя в степени n-1.А чтобы получить степень n-1 умножаем степень n-2 на то же число.И так до теx пор пока n-... не будет 1, в этом случае функция себя не вызовет.
che zombie jan, et es gitem :) , es tenc factorial el em hashvel, xanoyski bashnyaneri xndirn el em lu&el...
indz hetakrkir a te inch eghanakov a realizacvum da henc kompilyatri koghmic.
katarvuma henc nuyn dzevi...
motavorapes senc...
push N
push number
call POWER
....
.......
POWER:
pop ecx
pop eax
cmp eax, 1
jz THAS_IT
mov edx, eax
dec edx
push edx
push ecx
call POWER
mov ecx, eax
dec ecx
mul ecx
THATS_IT:
mov eax, ecx
ret
voncvor te chisht em grel ::}
Aram Hambardzumyan
May 4, 2002, 07:04
Originally posted by strax.:
indz hetakrkir a te inch eghanakov a realizacvum da henc kompilyatri koghmic.да абсолютно тем же способом, как и вызовы остальных функций. никакой разницы - ни принципиальной, ни в реализации.
ok, thanks
aysinkn amen kanchman jamanak noric chi steghcvum et funkcian, ayl kirakvum a hin@ ` nor parametrnerov.
ayo, nenak petqa hishel vor amen angam funkcian kanchelu depqum parametrera push arvum stack, naev pusha arvum hascen voertexic vor call arvum, vor heto het gal lini, aysinqn ka stack lcvelu problem@ naev ::}
ayo, nenak petqa hishel vor amen angam funkcian kanchelu depqum parametrera push arvum stack, naev pusha arvum hascen voertexic vor call arvum, vor heto het gal lini, aysinqn ka stack lcvelu problem@ naev ::} ay henc et ei uzum imanam. Aysinkn ete funkcian, mi kich shat gorcghutyun a anum u rekursiv kancher@ shat en, anpayman kkaxvi cragir@... :(
@ndhanur depqum ha, de et el (stack-i chap@) galisa arden comp-ic, nra RAM-ic ev ayln...
kam el ete chem sxalvum mek-mek el kaxvaca henc cragric te cragir ir hamar inchqan texa vercnum stack-ic
>..steghcvum et funkcian..
Уважаемые, функция не "создается" - а вызывается.
а при вызове функции стек используется не тока для передачи параметров, но и для выделения места под ее локальные переменные.
:)
b/r
Dark Abyss of Yerevan
May 7, 2002, 12:23
Originally posted by SMoKE:
@ndhanur depqum ha, de et el (stack-i chap@) galisa arden comp-ic, nra RAM-ic ev ayln...
kam el ete chem sxalvum mek-mek el kaxvaca henc cragric te cragir ir hamar inchqan texa vercnum stack-icIndz tvuma ches sxalvum, vorovhetev asm ov vor grum enq menq enq che stack i chap@ cragri hamar vercnum..
ha, isk ete asm-ov chenk grum :confused:
orinak Delphi-um
Project --> Options --> Memory Sizes (Linker)
karas dnes minstack size, maxstack size, imagebase...
Hi All
ete hnaravorutjun ka sahmanapakel stack-i chat@ apa karox eq porcel stacki mej grel aveli shat informacia qan ira hnaravorutjunn e , heto najel te in4 e katarvel , pahel e te vo4 stack uxarkac arajin arjeqner@.
sranov havanabar kparzeq me$ qanakov rekursiaji zhamanak problem klini te vo4.
Aram Hambardzumyan
May 8, 2002, 17:05
но если сама функция написана криво, то никакого конечного стека не хватит! (почти всегда причина переполнения стека в этом)
Ektich
May 10, 2002, 18:34
Ete ASM-ov ches grum compilyator@ avelacnum a sagh stack/memory reservation ctorner. U stegh arden kaxvac a inch compilyator es oktagorcel u vonc a inq@ ed amen inch@ anum.
Nujnisk ete chem sxalvum tarber lezuner@ tarber dzevi en stack oktagorcum funkciya kancheluc (hishum em pascal-ic C-i funkciya kanchel@ edqan el hesht cher!).
Try and will find! :) Turbo C-um DOS-i tak kar 5 te 6 memory model (tiny, small, huge, large ev ayln, lriv chem hishum ardne).
Henc et er voroshum qo mot data, code, stack ev heap (?) inchqan tegh en versnum (64Kbayt-anoc ktornerov).
Originally posted by strax.:
ha, isk ete asm-ov chenk grum :confused:
strax.
May 13, 2002, 23:26
2 Ektich,
ok, thanks, prosto es asm der chgidem dra hamar mi kich lav chei patkeracnum et paher@. :)
vBulletin® v3.6.8, Copyright ©2000-2008, Jelsoft Enterprises Ltd.