Cet article présente principalement la fonction récursive JavaScript pour implémenter la "Tour de Hanoï", qui a une certaine valeur de référence. Maintenant, je la partage avec vous. Les amis dans le besoin peuvent s'y référer
La "Tour". of Hanoi" est un célèbre jeu de puzzle. La tour comporte trois piliers et un ensemble de disques creux de différents diamètres. Au début, tous les disques du pilier sont empilés du plus petit au plus grand. L'objectif est de déplacer une pile de disques vers la colonne cible en déplaçant un disque vers une autre colonne à la fois. Au cours du processus, les disques plus grands ne sont pas autorisés à être placés sur des disques plus petits.
Interprétez attentivement ce passage. S'il y a 10 disques ou plus, le nombre d'étapes sera certainement choquant, mais le but est de déplacer un tas de disques vers le pilier cible. Si ce qui précède, les 9 disques sont. considéré comme un ensemble, et le 10ème disque est considéré comme un autre ensemble. Déplacez d'abord les 9 disques vers un autre pilier, puis les 8 disques ci-dessus sont considérés comme un ensemble, et le 9ème disque est considéré comme un autre ensemble... Par analogie. , décomposition et mouvement, l'idée de fonctions récursives se reflète.
Complétez le code, manière très simple de l'écrire. Existe-t-il une manière plus simple de l'écrire ?
var hanoi = function {disc, begin, end, helper) { if (disc > 0) { hanoi(disc - 1, begin, helper, end); document.writeln('移动圆盘 ' + disc + ' 从 ' + begin + ' 到 ' + helper); hanoi(disc - 1, end, begin, helper); } }; hanoi(3, '柱子一', '柱子二', '柱子三');
Sortie lorsque le nombre de disques est de 3 :
Déplacer 1 du pilier un au pilier trois
Déplacer le 2 de Pilier un au pilier deux
Déplacement 1 Du pilier trois au pilier deux
Déplacement 3 Du pilier un au pilier trois
Déplacement 1 Du pilier deux au pilier un
Déplacement 2 Du pilier deux au pilier trois
Déplacer 1 du pilier un au pilier trois
Les paramètres transmis à la fonction hanoi incluent le numéro de disque en cours de déplacement et les trois piliers qu'elle utilisera. Lorsqu'il appelle senior, il traite le disque au-dessus de celui en cours de traitement. Finalement, il sera appelé avec un numéro de disque qui n'existe pas. Dans de tels cas, cela ne fait rien. Puisque cette fonction ignore les valeurs illégales, il n’y a pas lieu de s’inquiéter de provoquer une boucle infinie.
Ce qui précède représente l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'étude de chacun. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois !
Recommandations associées :
Comment utiliser du code JS pur pour déterminer le nombre de caractères chinois dans une chaîne
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!