Gå til innhold

Er det stygt at en funksjon kaller ser selv?


Anbefalte innlegg

Skrevet (endret)

class SomeClass:
def someFunction(self):
	loads of if's and what's ^^
		som kommer fram til
		self.someFunction()

 

Er den god python? Eller er det lurest å sette inn en while-loop og break i stedet?

Endret av Xecuter88
Videoannonse
Annonse
Skrevet

Jeg bruker endel recursive calls selv når jeg har bruk for det(riktignok c++, men er vel det samme). Ser ikke egentlig problemet med det, sparer endel kode gjør det jo også.

Skrevet
class SomeClass:
def someFunction(self):
	loads of if's and what's ^^
		som kommer fram til
		self.someFunction()

 

Er den god python? Eller er det lurest å sette inn en while-loop og break i stedet?

 

 

Kult! Rekursjon er ofte en elegant og naturlig formulering av algoritmer, som ellers ville blitt veldig hårete med imperative løkker. Man bør være litt obs. på ytelse og ressursbruk, da dype nestinger av rekursive kall ta endel ressurser i form av:

1. Tid: for å allokere en stakkramme (eng: stack frame) for hver instanse av funksjonskallet.

2. Plass: minnebruken til mange stakkrammer (gir f.eks. runtime exceptions i de fleste språk, hvis man uttømmer

stakken, den klassiske "stack overflow" o.l.).

 

Heldigvis har de fleste moderne kompilatorer optimaliseringer som gjøre at man ikke trenger å

bekymre seg særlig, bl.a. fjerning av halerekursjon (eng: tail recursion), som gjør om mange av de enkleste

formene til en løkke internt.

Skrevet
Heldigvis har de fleste moderne kompilatorer optimaliseringer som gjøre at man ikke trenger å

bekymre seg særlig, bl.a. fjerning av halerekursjon (eng: tail recursion), som gjør om mange av de enkleste

formene til en løkke internt.

 

 

Men python kompileres ikke? Pythonkode blir tolket (god norsk?(interpreted)) når koden kjøres.

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...