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
-
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.
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;
}