Home > Informatica, Programmazione, Scheme > Scheme – Ricorsione di coda (min, max) -

Scheme – Ricorsione di coda (min, max) -

8 agosto 2010 - 233 Volte visto Lascia un commento Vai ai commenti
1 Star2 Stars3 Stars4 Stars5 Stars (Ancora nessun voto)
Loading ... Loading ...

############################################################## LE INFORMAZIONI DI QUESTO POST POTREBBERO ESSERE VECCHIE ##############################################################

Definisci in Scheme un programma su una procedura ricorsiva di coda, più eventuali procedure non ricorsive, per trovare minimo e massimo da una lista.

(define mix
  (lambda (m n)
    (if (< m n)
        m
        n)
    ))

(define man
  (lambda (m n)
    (if (> m n)
        m
        n)
    ))

(define f
  (lambda (txt)
    (f-tr txt (car txt) (car txt))
    ))

(define f-tr
  (lambda (t m n)
    (if (null?  (cdr t)) (list m n)
    (f-tr (cdr t) (mix m (mix (car t) (cadr t))) (man n (man (car t) (cadr t))))
    )))

(f '(2 3 4 1 5 4 3 7 9 10))

Altra soluzione assai più esigua che utilizza molto l’ingegno ;)

(define min-max
  (lambda (nums)
    (min-max-tr (car nums) (car nums) (cdr nums))
    ))

(define min-max-tr
  (lambda (min max nums)
    (if (null? nums)
        (list min max)
        (min-max-tr
         (if (< (car nums) min) (car nums) min)
         (if (> (car nums) max) (car nums) max)
         (cdr nums))
        )))
Creative Commons License
This work, unless otherwise expressly stated, is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 2.5 Italy License.
Condividi su: Facebook Twitter Google Delicious Google Buzz
  1. Nessun commento ancora...
  1. Nessun trackback ancora...

Calcola dodici + quindici =



NOTE SUI COMMENTI:

Se non avete mai scritto nulla su questo blog, sappiate che il vostro primo commento dovrà essere approvato manualmente dall'amministratore e quindi non comparirà subito sul sito.
Questo sito usa gli Avatar.
E' possibile usare dei tag HTML nel testo del commento, ma solamente quelli validi come XHTML "Strict" verranno accettati, quindi il risultato potrebbe anche essere un po' diverso dal previsto... nel dubbio, usate il testo semplice!
L'avviso di nuovi commenti è completamente automatizzato e nessuno degli indirizzi e-mail verrà fornito a terzi.
La vostra e-mail, che comunque resterà sempre riservata, serve anche per il conteggio del totale dei vostri commenti e per inviarvi, se ne fate richiesta soluzioni ai problemi o ulteriori informazioni nel totale rispetto del D.Lgs 196/2003.