Função recursiva - Torre de Hanói

Função recursiva - Torre de Hanói

  • Definição: Ligue-se direta ou indiretamente na função.

    Pontos chave:

    Ao definir uma função recursiva, você deve determinar uma "condição final"! ! !

    Ocasião de uso:

    Lidar com alguns problemas particularmente complexos é difícil de resolver diretamente.

    No entanto, pode haver maneiras de tornar este problema mais simples (convertê-lo em um problema mais simples)

  • Use o Inception para nos ajudar a entender as funções recursivas

Insira a descrição da imagem aqui

  • Desvantagens das funções recursivas: baixo desempenho! ! !

    No desenvolvimento real, raramente é usado!

Use a recursão para resolver o problema da Torre de Hanói

  • Torre de Hanói

    Regra: O stick do meio pode ser usado como um assistente, mas apenas um stick pode ser movido de cada vez, e o stick grande não pode ser colocado no menor.

Insira a descrição da imagem aqui

Use o 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;
}

Insira a descrição da imagem aqui

Acho que você gosta

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