typestar

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

  1. Mueve n-1 a un lado, mueve el mayor, vuelve a mover n-1.
  2. El número de movimientos se duplica con cada disco extra.
  3. El parámetro de salida cuenta los movimientos sin imprimirlos.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 7 de 7 en Funciones; paso 21 de 35 en Fundamentos del lenguaje.

← Anterior Siguiente →