Rekursion
Jag försöker få en bättre förståelse för funktioner som anropar sig själva. Nedan är exempelkod som löser problemet towers of Hanoi https://en.wikipedia.org/wiki/Tower_of_Hanoi.
Här är exempelkoden länkad i python visualise:
Jag förstår inte steg 20-21 när programmet verkar skippar rad 3 och fortsätter vidare till den andra if - satsen. Någon som har någon bra förklaring på hur python tänker i det här läget?
Det ser ut som att n har blivit 0, och ett anrop har därmed returnerat. Det returnerar till raden efter där det gjordes, så det är det som ser ut som ett hopp i koden.
Laguna skrev:Det ser ut som att n har blivit 0, och ett anrop har därmed returnerat. Det returnerar till raden efter där det gjordes, så det är det som ser ut som ett hopp i koden.
Jag förstår att moves(n, left) returnerar None när n=0. Menar du att python returnerar None till raden med moves(n-1, not left), varför i såna fall?
Johanspeed skrev:Laguna skrev:Det ser ut som att n har blivit 0, och ett anrop har därmed returnerat. Det returnerar till raden efter där det gjordes, så det är det som ser ut som ett hopp i koden.
Jag förstår att moves(n, left) returnerar None när n=0. Menar du att python returnerar None till raden med moves(n-1, not left), varför i såna fall?
När ett funktionsanrop returnerar så returnerar det till den punkt där anropet gjordes. Vart skulle det annars ta vägen?
Laguna skrev:Johanspeed skrev:Laguna skrev:Det ser ut som att n har blivit 0, och ett anrop har därmed returnerat. Det returnerar till raden efter där det gjordes, så det är det som ser ut som ett hopp i koden.
Jag förstår att moves(n, left) returnerar None när n=0. Menar du att python returnerar None till raden med moves(n-1, not left), varför i såna fall?
När ett funktionsanrop returnerar så returnerar det till den punkt där anropet gjordes. Vart skulle det annars ta vägen?
Förstår nu, tack!