webForumDet fria alternativet

Kalla funktion i samma funktion

C/C++

4 svar · 274 visningar · startad av arghuleh

Medlem sedan apr. 200311 inlägg
Frågan#1

Hejsan!
Att kalla en funktion i samma funktion kan vara bra för att t.ex. radera eller allokera länkade listor. Se exempel nedanför (koden fyller ingen funktion men förenklat visar vad jag menar).

int func(int i){
if(i==0) return 0;

func(i-1);

return 0;
}//int func(int)

Frågan är, hur djupt kan jag använda denna typ av återkallning av funktion. Ett djup på 1000000 klarar systemet nog inte av, vilket är logiskt. Finns det någon standard som ej skall överskridas, eller är det ytterst olämpligt att använda denna typ av programmering? Vad skall man tänka på?

/Jompa

Medlem sedan juni 200010 432 inlägg
#2

Rekursion är som du säger bra för korta snuttar, annars käkas programstacken upp i ett nafs - om du i varje varv allokerar nytt utrymme. I ditt exempel görs ju inte detta så det borde inte spela nån roll, där.
Det finns nog inget bra generellt maxvärde på antalet rekursioner då det är väldigt systemspecifikt om hur mycket utrymme som finns att använda. Det blir nog en avvägning från fall till fall.

Medlem sedan apr. 200311 inlägg
#3

Tack!

Medlem sedan juni 200010 432 inlägg
#4

Välkommen till wF, förresten! :D

Medlem sedan apr. 200311 inlägg
#5

Tack än en gång! Fick tips från en jag känner.

PS.
Är uppväxt i Enköping faktiskt!
DS.

261 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)