Wednesday, November 08, 2006

решения на задачите по ф.пр.

1. зад:
(define (sum-rec n)
(if (= n 1) 0
(+ (/ (- n 1) n) (sum-rec (- n 1)))))


(define (sum-iter n)
(define (tmp count rez)
(if (> count n) rez (tmp (+ count 1) (+ rez (- 1 (/ 1 count))))))
(tmp 2 0))

зад.2:
(define (list-primes a b)
(define (prime? x)
(define (tmp delitel)
(if (> delitel (/ x 2)) #t
(if (= (modulo x delitel) 0) #f
(tmp (+ 1 delitel)) ) ) )

(tmp 2) )
(if (>= b a) (cond ((< a 2)(list-primes 2 b))
((prime? a )
(display a)(display " ")(list-primes (+ a 1) b)
)
(else (list-primes (+ a 1) b))
) ) )

зад.3:

( define (reverse x)
( define (tmp a rez)
( if (= a 0) rez (tmp (floor(/ a 10)) (+ (* rez 10) (modulo a 10) ) ) )
)
(tmp x 0)
)

зад. 4:

(define (sum-list a b c)
(define (sum x rez)
(if (= x 0) rez (sum (floor(/ x 10)) (+ rez (modulo x 10))))
)
(cond ( (and (<= a b) (= c (sum a 0)))
(display a) (display " ") (sum-list (+ a 1) b c )
)
( (<= a b )
(sum-list (+ a 1) b c )
) ))


Задачите достигат до вас с любезната помощ на Камен :))))))

No comments: