Algorithmusanalyse und Designkursexperiment – Rekursiver Algorithmus zur Lösung des Turm-von-Hanoi-Problems

Inhaltsverzeichnis der Serienartikel

Kapitel 1 Algorithmusanalyse und Entwurf eines rekursiven Algorithmus


Inhaltsverzeichnis der Serienartikel


Vorwort

  1. Beherrschen Sie die grundlegenden Ideen und Implementierungsmethoden rekursiver Algorithmen.
  2. 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.

Guess you like

Origin blog.csdn.net/m0_62422680/article/details/129778183