Avatar billede superfrog Nybegynder
10. september 2002 - 17:02 Der er 6 kommentarer og
1 løsning

Rekursion vs Iteration

Hejsa - er ved en skoleopgave, hvor jeg bla skal komme ind på hvilke prog-sprog der er optimale for de to programmerings metoder - håbede at i har nogle gode forslag - jeg skal helst hele vejen rundt, kan i måske huske om det virkede i comal80??? - for det kan jeg ikke...
De ting jeg kunne forstille mig som problemer er sådan noget som stackfylde, om man overhoved må køre lave rekursive funktioner, og om variabler f.eks. altid er globale - hvis nogen kan komme med links er det oxo fint.
Ved du f.eks. noget om ASP, så skriv bare hvad du ved om det, så er der sikkert nogle andre der ved noget om f.eks. c el.l.
Jeg er stærkt intereseret i programmer der ikke understøtter rekursion, og jeg mener _ALT_ - script-sproget i mirc??? - er der nogen der ved det? - ASP som nævnt? - _ALT_!!!
Håber nogen har en kommentar!
Avatar billede jakoba Nybegynder
10. september 2002 - 17:17 #1
rekursion er primært stærkt i funktions-baserede sprog:
    Lisp, Phyton, Proglog, Forth

men modulære sprog er godt med, der er gode til begge dele:
    Pascal, C, Java, php, javascript.

det er især de meget gamle eller sekventielle sprog der har problemer med at lave rekursion og tvinger dig til at lave den iterativet med en simuleret stak:
    Basic, Cobol, fortran.
men de har næsten allesammen moderne overbygninger der tillader dem at blive brugt rekursivt alligevel.

Jeg har svært ved at tro på man ikke kan lave rekursive funktioner i ASP, i ASP med JScript kan man 100% sikkert, og i ASP med VBscript burde det også være muligt. Visual Basic er ikke så vældig gammelt og det er ikke en feature man smider væk når man først har den.

mvh JakobA
Avatar billede jakoba Nybegynder
10. september 2002 - 17:22 #2
Ja, jeg mener comal80 havde mulighed for lokale variable i subroutinerne så den kunne lave rekursion. Men det kan godt være at man specifikt skulle erklære funktionen til at være rekursiv (ligesom i PL1 og PLM).
Avatar billede superfrog Nybegynder
10. september 2002 - 17:22 #3
Hvad er argumentet for at det er smartere i lisp m.fl.? - hvad er deres stærke side frem for pascal m.fl.
Avatar billede jakoba Nybegynder
10. september 2002 - 17:46 #4
Det er ikke specielt 'smartere' i det ene eller det andet sprog. Det er blot at nogen sprog er struktureret så de er mere velegnede til at lave rekusion end andre.

Fx var der i tidlig fortran slet ikke nogen stak, og hvis man ikke kan stakke sine data og returadresser er det rimeligt svært at lave rekursion :-))

men også måden man ser på sin algoritme kan gøre den mere eller mindre velegnet til en rekursiv løsning. Lisp er et funktionsbaseret sprog og de er ideelle til at få programmøren til at 'tænke på den rigtige måde' så han ofter finder den rekursive frem for den iterative løsning.

Det kan være så meget at det bliver et problem. I prolog fx blev der arbejdet ret intenst på at finde optimeringsmetoder der kunne få prolog fortolkeren til at opdage slut-rekursion og erstatte det med en simpel løkke hvor det var muligt. For selvom rekusionen ofte er nemmere at gennemtænke og bevise logisk, så er iteration en del hurtigere.

mvh JakobA
Avatar billede superfrog Nybegynder
11. september 2002 - 10:10 #5
TAK! - lader lige spg stå en dags tid, og ser om der er flere der har noget at sige! :) - men tak indtil videre!
Avatar billede superfrog Nybegynder
17. september 2002 - 09:50 #6
Hmm - det var der åbenbart ikke - men du skal da have mange tak!
Avatar billede jakoba Nybegynder
17. september 2002 - 10:10 #7
tak for pts :-)

kik evt på spm http://www.eksperten.dk/spm/257860

der er 3 versioner af en fibonaccifunktion

første version er fuldt rekursiv og umiddelbart forståelig fordi den direkte afspejler induktionen. men dens køretid er ON^3

anden og tredie version er successivt mere iterative og mindre åbenlyse, men køretiden falder til ON^2 og tilsidst en ren ON.

mvh JakobA
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester