Hvorfor kan dette ikke lade sig gøre? Hvis 1000 ændres til 100 kører den fint nok, så der er ikke tale om en uendelig løkke:
<%@ Language=VBScript %> <% Dim tmp Function Recursiv(value) tmp = tmp & value & "<br>" If value < 1000 Then Recursiv(value+1) End If Recursiv = tmp End Function
Det er et spørgsmål om, hvor meget stakplads din webserver stiller til rådighed for at udføre ASP. Jeg er ikke klar over, om dette er noget man kan stille på.
Hvert niveau af rekursion bruger en vis mængde stak, afhængig af antallet af parametre og antallet af lokale variable i den rekursive sub. En rekursions-dybde på 1000 er faktisk MEGET, og hvis dit problem giver anledning til at du har behov for det, bør du overveje en anden løsningsmetode.
Det kan ikke lade sig gøre fordi, der kun er reserveret en vis mængde plads på "stakken" til hver process. Rekursive funktioner er gode til at afspejle løsningen på en problemstilling, men er sjældent hurtige. Derfor vil man typisk vælge at implementere dem vha. en løkke konstriktion.
Dit eksempel er iøvrigt let at skrive om, da du gemme mellemresultatet i en global variabel, hvilket vel er lidt atypisk for en rekursiv funktion.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.