Stap 2: Code de recursieve patroon
Om op te lossen voor N schijven, moeten we kunnen voor N-1 schijven op te lossen. Dit is waar de recursie komt. U wilt als onderdeel van dit plan, schrijf code die voor een verschillend aantal schijven voor de puzzel, evenals de verschillende posten voor start en bestemming geldt.
De pseudo-code voor die lijkt op:
Ik bedoelde specifiek post A, post B en C hierboven post, maar de code dient te worden veralgemeend omdat afhankelijk van de schijf, de post van de start en bestemming berichten zullen afwijken. Als je erover nadenkt, zijn we de puzzel 3 keer oplossen:
- N-1 schijven verplaatsen van post A post B
- N-1 schijven verplaatsen van post B post C
- N schijven verplaatsen van post A naar post C
Dus moet je een veralgemeende programma waarmee u vertellen wat de start en bestemming posten zijn. Wat interessant is is dat je niet echt het schrijven van een heleboel code, die een groot deel van de aantrekkingskracht van recursie. U simpelweg beschrijven in het programma hoe een berekening breken in kleinere stukken, en de computer doet de rest.
De gedetailleerde pseudo-code ziet er als:
Hier is hoe de JavaScript-code eruit ziet:
Als je niet een programmeur, laat het me uitleggen dat de bovenstaande code is verpakt in een "functie" die u kunt uitvoeren dezelfde code met verschillende ingangen. U kunt het programma nu vertellen hoeveel schijven u in uw puzzel hebt, alsmede welke posten de start, bestemming en halteplaatsen zijn. De functie is ook de basis voor het kunnen uitvoeren van recursie, in die dezelfde code opnieuw wordt uitgevoerd, maar met verschillende ingangen (ingangen zijn ook bekend als "parameters" of "argumenten" in programmering lingo).