Torres de Hanói en C
Recursión que mueve una pila entera confiando en el caso más chico.
void hanoi(int n, char from, char to, char via, int *moves) {
if (n == 0) {
return;
}
hanoi(n - 1, from, via, to, moves);
(*moves)++;
hanoi(n - 1, via, to, from, moves);
}
int moves_for(int discs) {
int moves = 0;
hanoi(discs, 'A', 'C', 'B', &moves);
return moves;
}
Cómo funciona
- Mueve n-1 a un lado, mueve el mayor, vuelve a mover n-1.
- El número de movimientos se duplica con cada disco extra.
- El parámetro de salida cuenta los movimientos sin imprimirlos.
Palabras clave y builtins usados aquí
charifintreturnvoid
El intento, en números
- Líneas
- 14
- Caracteres a escribir
- 267
- Tokens
- 105
- Ritmo de tres estrellas
- 90 tpm
Al ritmo de tres estrellas de 90 tokens por minuto, este intento toma unos 70 segundos.
Paso 7 de 7 en Funciones; paso 21 de 35 en Fundamentos del lenguaje.