11.04.2013 Views

Guida avanzata di scripting Bash - Portale Posta DMI

Guida avanzata di scripting Bash - Portale Posta DMI

Guida avanzata di scripting Bash - Portale Posta DMI

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

23.3. Ricorsività senza variabili locali<br />

Capitolo 23. Funzioni<br />

Una funzione può richiamare se stessa ricorsivamente anche senza l’impiego <strong>di</strong> variabili locali.<br />

Esempio 23-14. La torre <strong>di</strong> Hanoi<br />

#! /bin/bash<br />

#<br />

# La Torre <strong>di</strong> Hanoi<br />

# Script <strong>Bash</strong><br />

# Copyright (C) 2000 Amit Singh. Tutti i <strong>di</strong>ritti riservati.<br />

# http://hanoi.kernelthread.com<br />

#<br />

# Ultima verifica eseguita con la versione bash 2.05b.0(13)-release<br />

#<br />

# Usato in "Advanced <strong>Bash</strong> Scripting Guide"<br />

#+ con il permesso dell’autore dello script.<br />

# Commentato e leggermente mo<strong>di</strong>ficato dall’autore <strong>di</strong> ABS.<br />

#========================================================================#<br />

# La Torre <strong>di</strong> Hanoi è un rompicapo matematico attribuito a<br />

#+ Edouard Lucas, matematico francese del XIX secolo.<br />

#<br />

# Ci sono tre pioli verticali inseriti in una base.<br />

# Nel primo piolo è impilata una serie <strong>di</strong> anelli roton<strong>di</strong>.<br />

# Gli anelli sono dei <strong>di</strong>schi piatti con un foro al centro,<br />

#+ in modo che possano essere infilati nei pioli.<br />

# I <strong>di</strong>schi hanno <strong>di</strong>ametri <strong>di</strong>versi e sono impilati in or<strong>di</strong>ne<br />

#+ decrescente in base alla loro <strong>di</strong>mensione.<br />

# Quello più piccolo si trova nella posizione più alta,<br />

#+ quello più grande alla base.<br />

#<br />

# Lo scopo è quello <strong>di</strong> trasferire la pila <strong>di</strong> <strong>di</strong>schi<br />

#+ in uno degli altri pioli.<br />

# Si può spostare solo un <strong>di</strong>sco alla volta.<br />

# È consentito rimettere i <strong>di</strong>schi nel piolo iniziale.<br />

# È permesso mettere un <strong>di</strong>sco su un altro <strong>di</strong> <strong>di</strong>mensione maggiore,<br />

#+ ma *non* viceversa.<br />

# Ancora, è proibito collocare un <strong>di</strong>sco su uno <strong>di</strong> minor <strong>di</strong>ametro.<br />

#<br />

# Con un numero ridotto <strong>di</strong> <strong>di</strong>schi, sono necessari solo pochi spostamenti.<br />

#+ Per ogni <strong>di</strong>sco aggiuntivo,<br />

#+ il numero degli spostamenti richiesti approssimativamente raddoppia<br />

#+ e la "strategia" <strong>di</strong>venta sempre più complessa.<br />

#<br />

# Per ulteriori informazioni, ve<strong>di</strong> http://hanoi.kernelthread.com.<br />

#<br />

#<br />

# ... ... ...<br />

# | | | | | |<br />

# _|_|_ | | | |<br />

# |_____| | | | |<br />

462

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!