Merhaba,

Şu bilindik problemi çözmeye çalışıyorum: Eldeki belirli para ile
verilen bir miktarı kaç farklı şekilde oluşturabiliriz? Bu kendi
kendini dahi açıklamayan açıklama cümlesinden sonra, hemen benim
çalışmayan kodumu ilişiğe ekliyorum:

(define (available-changes amount coins)
  (cond
   ((= amount 0) '())
   ((< amount 0) #f)
   (else
    (append-map
     (lambda (coin)
       (let ((avails (available-changes (- amount coin) coins)))
         (cond
          ((not avails) '())
          ((null? avails) (list coin))
          (else
           (append-map
            (lambda (changes)
              (list (cons coin changes)))
            avails)))))
     coins))))

;; Bize verilen 50 lirayı, eldeki 50, 25, 10, 5 ve 1 liraları
;; kullanarak hangi şekillerde oluşturabiliriz.
(available-changes 50 '(50 25 10 5 1))

Program çözemediğim şekilde sonsuz döngüye giriyor. Bu sorunun benim
kullandığım metod ile alakalı olması muhtemel. Öneri ve yorumlarınız
ile yardımcı olursanız gerçekten sevinirim.


İyi çalışmalar.

_______________________________________________
cs-lisp mailing list
cs-lisp@cs.bilgi.edu.tr
http://church.cs.bilgi.edu.tr/lcg
http://cs.bilgi.edu.tr/mailman/listinfo/cs-lisp

Cevap