Soyons honnêtes: je fais du bon en programmation depuis le début de l'année (lycée lycée) jusqu'au jour où nous avons enfin vu la récursivité. Je ne comprends pas le code récursif de Hanoi Towers: le point spécifique que je ne trouve pas est le changement entre la tour de destination et l'origine et vice versa:Je ne comprends pas l'algorithme de Hanoi
Je comprends fondamentalement ce qu'est la récursivité, et quelle est la pile, mais je ne comprends pas pourquoi l'ordre des tours est changé.
Votre aide sera grandement appréciée. Je vous remercie. // N nombre de pièces
private void Déplacer(short N, string o, string i, string d)
{
if (N == 1)
{
MessageBox.Show("Move " + o + "to " + d);
lstUn.Items.Add((lstUn.Items.Count + 1).ToString() + "-" + "Move " + o + " vers " + d);
return;
}
else
{
//Switch d and i
Déplacer((short)(N - 1), o, d, i);
lstUn.Items.Add((lstUn.Items.Count + 1).ToString() + "-" + "Déplace " + o + " vers " + d);
MessageBox.Show("Déplace " + o + " vers " + d); //1 vers 3
Déplacer((short)(N - 1), i, o, d);
}
... Et c'est ce devoir? – Aaron
S'il s'agit de C, l'utilisation du glyphe 'é' dans un nom de fonction est exotique. – unwind
Avez-vous réellement fait le puzzle de la tour de hanoi pour de vrai?Si tout commence sur la pile du milieu et que vous voulez le déplacer, vous faites une pile d'un objet sur la gauche. Ensuite, une pile de deux éléments sur la droite, puis une pile de trois éléments sur la gauche et ainsi de suite. Essentiellement, vous devez utiliser l'espace libre qui déplace chaque itération. Je n'ai pas suivi votre code avec attention mais c'est probablement l'explication (en gros au moins). – Chris