Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Le Torri di Hanoi

    Qualcuno gentilmente mi può spiegare come lavora la funzione tower??
    codice:
    #include <stdio.h>
    void tower (int, int, int, int);
    
    int main()
    { 
       int n;
       
       printf ("Enter the starting number of disks: ");
       scanf ("%d", &n);
       tower (n, 1, 3, 2);
       
       system ("pause");
       return 0;
    }
    void tower (int c, int start, int end, int temp)
    { 
       if (c == 1){ 
          printf ("%d --> %d\n", start, end);
          return;}   
    
       tower (c - 1, start, temp, end);
    
       printf ("%d --> %d\n", start, end);
    
       tower (c - 1, temp, end, start);
    }

  2. #2
    Non mi aiuta nessuno?

  3. #3
    Utente di HTML.it L'avatar di matrics
    Registrato dal
    Jul 2004
    Messaggi
    502
    Originariamente inviato da f@nt@m@n
    Non mi aiuta nessuno?
    Tower fa quello che fai per spostare gli anelli in minor tempo possibile 2^n(e chiamalo minore possibile...)

    Usa tre aste start end e tmp
    Via via che va avanti ricorsivamente inverte le aste per inserire gli anelli al punto giusto.
    Prova ad eseguire il codice manualmente, solitmante faccio così se non capisco
    Magari ti disegni proprio le 3 torri e gli anelli

  4. #4
    Dunque, se poniamo n = 3, il risultato sarà
    1 -> 3
    1 -> 2
    3 -> 2
    1 -> 3
    2 -> 1
    2 -> 3
    1 -> 3
    Credo sia così.
    Il caso base è c == 1. Quindi si passerà a
    codice:
    tower (c - 1, start, temp, end);
    che restituirà START-END, START-TEMP e END-TEMP (perchè??)
    codice:
    printf ("%d --> %d\n", start, end);
    stamperà la quarta riga e
    codice:
    tower (c - 1, temp, end, start);
    farà il resto. :master: Non capisco ancora bene come funzionino le due chiamate ricorsive. :master:
    Se non sbaglio l'ordine in cui restituiscono i parametri (1-3, 1-2, 3-2) è lo stesso, ma perchè quell'ordine?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.