12. november 2004 - 22:43Der er
6 kommentarer og 1 løsning
Er gået 100% kold på simpel simpel rekursiv funktion
Jeg fatter ikke en bønne - har lavet masser af rekursive funktioner tidligere uden problemer, men kan simpelt hen ikke gennemskue hvad jeg gør galt i denne. Her er koden:
function displaySitemap(arrStructure,intParentid,intIndent)
if isarray(arrStructure) then
for x = 1 to intIndent strIndent = strIndent & " " next
kalder jeg funktionen inden i funktionen (altså mit rekursive kald)
Dette fungerer tilsyneladende også fint nok. MEN når dette kald er færdigt og der returneres til det oprindelige loop er min variabel n blevet ændret.
Dvs. at værdien af n fra mit rekursive funktionskald nu bliver brugt videre i mit første funktionskald.
Dette gør selvfølgelig at min funktion fejler. Variablen n (som jeg har lavet 2 gange response.write på) skulle jo gerne indeholde samme tal både før og efter det rekursive kald.
HVORFOR bliver n ændret ?
Hvordan kan det rekursive kald påvirke variabler i det oprindelige funktionskald ?!?
Håber MEGET at een af jer derude kan se hvad mine øjne efter 4 timer har stirret sig blinde på....
har nu fundet ud af at hvis jeg opretter en ny blank side, hvor jeg KUN indsætter ovenstående funktion og så kalder den, ja så vises min sitemap korrekt ?!?
Hvad kan det være af kode i mit site der får min rekursive funktion til at opføre sig således at værdien af n føres med tilbage når et rekursivt kald er færdigt ?
Jeg prøvede at fjerne menuen fra mit site. Denne er IKKE lavet fra et funktionskald men blot skrevet som et loop direkte i design koden. I dette loop bruger jeg også variablen n som counter. Dvs. at variablen n er blevet erklæret globalt for mit asp dokument.
Jeg går ud fra at det er dette som ændrer adfærdsmønster for hvorledes værdier at variabler i funktioner håndteres.
1) Det blivere nemmere at fejlsøge når alle variabler er deklareret 2) Det løser jo mit aktuelle problem. Når n er deklareret i min funktion påvirkes den ikke længere af at min menu på siden også benytter sig af en variabel kaldet n
Har altid godt kendt til punkt 1, men har vist været for doven til at gøre noget ved det :-)
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.