Función recursiva-Torre de Hanoi

Función recursiva-Torre de Hanoi

  • Definición: Llámese a sí mismo directa o indirectamente dentro de la función.

    Puntos clave:

    Al definir una función recursiva, ¡debe determinar una "condición final"! ! !

    Ocasión de uso:

    Tratar con algunos problemas particularmente complejos, es difícil de resolver directamente.

    Sin embargo, puede haber formas de simplificar este problema (convertirlo en un problema más simple)

  • Utilice Inception para ayudarnos a comprender las funciones recursivas

Inserte la descripción de la imagen aquí

  • Desventajas de las funciones recursivas: ¡bajo rendimiento! ! !

    En el desarrollo real, ¡rara vez se usa!

Utilice la recursividad para resolver el problema de la Torre de Hanoi

  • Torre de Hanoi

    Regla: El palo del medio se puede usar como asistente, pero solo se puede mover un palo a la vez, y el palo grande no se puede colocar sobre el pequeño.

Inserte la descripción de la imagen aquí

Utilice el programa para resolver este problema:

#include <stdio.h>

void hanoi(int n, char pillar_start[], char pillar_mid[], char pillar_end[]) {
    
    
	if (n == 1) {
    
    
		printf("从%s移动到%s\n", pillar_start, pillar_end);
		return;
	}

	hanoi(n - 1, pillar_start, pillar_end, pillar_mid);
	printf("从%s移动到%s\n", pillar_start, pillar_end);
	hanoi(n - 1, pillar_mid, pillar_start, pillar_end);
}

int main(void) {
    
    
	char name1[] = "A柱";
	char name2[] = "B柱";
	char name3[] = "C柱";
	int n = 3; //盘子数

	hanoi(3, name1, name2, name3);

	return 0;
}

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_44695317/article/details/113126189
Recomendado
Clasificación