Codename_Paragon Skrevet 16. oktober 2004 Del Skrevet 16. oktober 2004 Tipper denne artikkelen vil røyke ut andre som kjenner til awk... Situasjonen er som følger: jeg har et awk-skript som skal arrangere en tabell, og funksjonen jeg bruker er rekursiv. For hver rekursjon legger jeg et mellomresultat i et globalt array som jeg også leser data ut fra. En liten test viser at første rekursjon er OK, men andre runde da er tabellen nullet ut. Hvorfor det? Hva kan jeg gjør for å komme rundt problemet? Funksjonen er denne: function NextLeaf(current) { for (i = 1; i <= pagecount; ++i) {printf("%2s:%1s- ", i, order[i]) } print("---") print("seqi:" seqi " pagecount:"pagecount " Scanning from" current "\ni: order: Debug: curr(seqi) - p[i](i) : frq\n") while (seqi < pagecount) { max=0 # Find sibling with highest count for (i = 1; i <= pagecount; ++i) { printf("i: %2s order: %s :", i, order[i] ) if (order[i]="0") { sep = sprintf("%s@%s", current, pagelist[i]) frq=corr[sep] printf("Debug: %s(%s) - %s(%s) : %s\n", current, seqi, pagelist[i], i, frq); if (frq>max) { max=frq maxi=i } } else { printf(" Order %s\n", order[i] ) } } if (max>0) { # Have next in line printf("maxi: %2s frq: %3s seqi: %s\n", maxi, frq, seqi) order[maxi]=frq sequence[seqi++]=maxi NextLeaf(pagelist[maxi]) } else { print("No max found, bail out") } } } Det globale arrayet som nulles ut er order[]. Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå