Inhaltsverzeichnis der Serienartikel
Kapitel 1 Algorithmusanalyse und Entwurf eines rekursiven Algorithmus
Inhaltsverzeichnis der Serienartikel
Vorwort
- Beherrschen Sie die grundlegenden Ideen und Implementierungsmethoden rekursiver Algorithmen.
- Verstehen Sie die Designideen des Algorithmus in experimentellen Fällen.
1. Aufgabenbeschreibung
Problem mit dem Turm von Hanoi. Im Ausgangszustand befinden sich alle Scheiben auf Säule B und müssen auf Säule A verschoben werden.
2. Experimenteller Prozess
Wir alle kennen das berühmte Problem des Turms von Hanoi. Wie implementieren wir es also in Code?
erster Schritt
Wir können eine Funktion hanoi() definieren und drei Variablen darin einfügen. Diese drei Variablen repräsentieren jeweils Säule A, Säule B und Säule C:
void hanoi(int n,char a,char b,char c)
{//把n个盘子从a柱移动到c柱
if(n>0)
{
hanoi(n-1,a,c,b);//n-1个盘子从a移动到b
printf("%c->%c\n",a,c);//1个盘子从a移动到c
hanoi(n-1,b,a,c);//n-1个盘子从b移动到c
}
}
Schritt 2
Durch Aufrufen der Funktion hanoi() in der Hauptfunktion wird die Operation ausgeführt:
int main()
{
int n = 3; // 假设有3个盘子
hanoi(n, 'B', 'A', 'C');
return 0;
}
dritter Schritt
Der Gesamtcode lautet wie folgt:
#include <iostream>
using namespace std;
void hanoi(int n,char a,char b,char c)
{//把n个盘子从a柱移动到c柱
if(n>0)
{
hanoi(n-1,a,c,b);//n-1个盘子从a移动到b
printf("%c->%c\n",a,c);//1个盘子从a移动到c
hanoi(n-1,b,a,c);//n-1个盘子从b移动到c
}
}
int main()
{
int n = 3; // 假设有3个盘子
hanoi(n, 'B', 'A', 'C');
return 0;
}
Zusammenfassen
Das Obige ist das, worüber ich heute sprechen werde. In diesem Artikel wird der rekursive Algorithmus nur kurz vorgestellt. Mit dieser Idee können wir viele komplexe Probleme vereinfachen.