Skriva kod för att lösa pussel torn av Hanoi
F: Vad är det enklaste sättet att få summan av alla heltal mellan 1 och 100?
Svar: först får summan av alla heltal mellan 1 och 99, sedan lägga till 100.
Dumt, rätt? Detta är faktiskt ett exempel på en kraftfull söndra och erövra teknik i programmering kallas "rekursion." Rekursion behandlar en uträkning uppgift som en uppsättning av mindre, liknande uträkningar, med nästa mindre uträkningen beräknas, och sedan nästa, och nästa, tills du kommer till en "base case" med kända svar. För nästa steg i exemplet ovan, för att få summan av heltal mellan 1 och 99, du helt enkelt summera tal mellan 1 och 98, Lägg sedan 99. Om du hålla kommer ner i kedjan, kommer du till basen fallet att summera heltal mellan 1 och 1, som vi vet är 1.
En kul användning av rekursion är att skriva ett program som kan ge dig lösningen till Tower of Hanoi pusslet. Det pusslet visas i bilden på denna sida. Målet är att flytta alla diskar från det första inlägget till det tredje inlägget. Pusslet är:
- Du kan bara flytta en disk i taget från en post till en annan, vilket innebär att vid varje given tidpunkt, på mest en disk kan vara avstängd ett inlägg.
- Du kan flytta diskar till det andra inlägget som vilar område.
- Diskar kan inte flyttas ovanpå en mindre disk.
Hur kan detta pussel delas upp i mindre delar? Som bilderna visar, kan denna 7-disk version av Tower of Hanoi pussel lösas som:
- Lösa den 6-disk versionen av pussel från posten A-post B.
- Flytta disk 7 från posten A-post C.
- Lösa den 6-disk versionen av pusslet igen, denna gång från post B bokföra C.
För detta instructable, jag använder JavaScript som programmeringsspråk så du kan köra det i en vanlig webbläsare. Det hjälper för att vara förtrogen med några grundläggande Programmeringsteknik begrepp, men även om du inte, förhoppningsvis detta instructable kommer att bli intressant.
Om du gillar detta instructable, snälla rösta på mig i kodad skapelser tävlingen före 18 maj 2015. Tack.
Låt oss börja kodning!