0
Bir giriş olarak liste alan ve bir işlev çağıran bir işlev oluşturmaya çalışıyorum. Listeden geçmek için yapılması gereken özyineleme çağrıları ile karıştırıldım.Bir giriş olarak listeyi alan ve bir işlev çağıran şemadaki işlev
(define S (buildfunc '(1 0 -2 -3 4)))
Örnek: girdi olarak bir tamsayı ve
- alan bir fonksiyon üretilecek olan buna
- kareler
- 2 ile kare çarpar sonuç, 1 ekler
- Bu sonucu 3,
- ile çarpar ve 4 ekler (S 4) çıkış fonksiyonu
ise, sonuç olacaktır:
4 + 1 = 5 -> 25 -> 25 x 2 = 50 -> 50 * 3 = 150 - anda kullanarak> + 150 4 ==> 154
kodudur:
(define (s n) (lambda (L) (buildfunc n L)))
(define (buildfunc n L)
(cond
((null? L) '())
((equal? (car L) 0) (* n n))
((positive? (car L)) (+ n (car L)))
((negative? (car L)) (* n (car L)))
(else
(buildfunc n (cdr L)))))
(define C (s 3))
(C '(1 0 -2 -3 4))
'foldl' kullanmadan işlevi yazmanın bir yolu var mı? Şema için yeniyim ve listeden geçebileceğim yolu anlamaya çalışıyorum. – Siva