Índice de contenidos de los artículos de la serie.
Capítulo 1 Análisis y diseño de algoritmos Algoritmo recursivo
Índice de contenidos de los artículos de la serie.
Prefacio
- Dominar las ideas básicas y los métodos de implementación de algoritmos recursivos.
- Comprender las ideas de diseño de algoritmos en casos experimentales.
1. Descripción de la tarea
Problema de la Torre de Hanoi. En el estado inicial, todos los discos están en el pilar B y deben moverse al pilar A.
2. Proceso experimental
Todos conocemos el famoso problema de la Torre de Hanoi, entonces, ¿cómo lo implementamos en código?
primer paso
Podemos definir una función hanoi() e insertar tres variables en ella, estas tres variables representan el pilar A, el pilar B y el pilar C respectivamente:
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
}
}
Paso 2
Al llamar a la función hanoi() en la función principal, se realiza la operación:
int main()
{
int n = 3; // 假设有3个盘子
hanoi(n, 'B', 'A', 'C');
return 0;
}
tercer paso
El código total es el siguiente:
#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;
}
Resumir
Lo anterior es de lo que hablaré hoy. Este artículo solo presenta brevemente el algoritmo recursivo. Usando esta idea, podemos simplificar muchos problemas complejos.