https://github.com/yapeansa/hanoi_tower
Torre de Hanoi
https://github.com/yapeansa/hanoi_tower
c hanoi-towers recursive-algorithm
Last synced: 10 months ago
JSON representation
Torre de Hanoi
- Host: GitHub
- URL: https://github.com/yapeansa/hanoi_tower
- Owner: yapeansa
- Created: 2024-12-25T18:16:38.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-01-04T01:12:10.000Z (over 1 year ago)
- Last Synced: 2025-08-07T00:38:00.945Z (11 months ago)
- Topics: c, hanoi-towers, recursive-algorithm
- Language: C
- Homepage:
- Size: 3.91 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Torre de Hanoi
O objetivo na torre de Hanoi é mover uma pilha inteira de uma haste para outra obedecendo às seguintes regras:
1. Move-se apenas um disco de cada vez;
2. Cada movimento consiste em retirar o disco do topo de uma pilha e adicioná-lo ao topo de outra pilha;
3. Nenhum disco pode ser adicionado ao topo de um disco menor.
A seguir, vemos uma solução para o caso em que o número de discos é igual a 3.
## Chamada da Função `hanoi_tower(3, 'A', 'B', 'C')`
Temos n ≠ 1. Assim, a função hanoi_tower(2, 'A', 'C', 'B') é chamada.
## Chamada da Função `hanoi_tower(2, 'A', 'C', 'B')`
Ainda temos n ≠ 1. Desta forma, a função hanoi_tower(1, 'A', 'B', 'C') é chamada.
## Chamada da Função `hanoi_tower(1, 'A', 'B', 'C')`
Desta vez, temos n = 1. Com isto obtemos a seguinte saída:
> Mover disco 1 de A para B
Seguido da saída:
> Mover disco 2 de A para C
Logo após, temos a chamada da função hanoi_tower(1, 'B', 'C', 'A').
## Chamada da Função `hanoi_tower(1, 'B', 'C', 'A')`
Esta chamada nos fornece a saída:
> Mover disco 1 de B para C
Em seguida obtemos a seguinte saída, referente a chamada n = 3:
> Mover disco 3 de A para B
É feita então a chamada da função hanoi_tower(2, 'C', 'B', 'A').
## Chamada da Função `hanoi_tower(2, 'C', 'B', 'A')`
Aqui novamente temos n ≠ 1 de modo que a função hanoi_tower(1, 'C', 'A', 'B') é chamada.
## Chamada da Função `hanoi_tower(1, 'C', 'A', 'B')`
Com isso, obtemos a seguinte saída:
> Mover disco 1 de C para A
Seguido da saída:
> Mover disco 2 de C para B
Agora a função hanoi_tower(1, 'A', 'B', 'C') é chamada.
## Chamada da Função `hanoi_tower(1, 'A', 'B', 'C')`
Temos a seguinte saída para esse caso:
> Mover disco 1 de A para B
Com isso, o ciclo termina e o programa finaliza.
## Executando o arquivo
Para rodar o programa basta executar `./run.sh` no terminal. Talvez seja necessário tornar o arquivo run.sh um executável. Isto pode ser feito por meio do comando `chmod u+x run.sh`.