;double的功能是2*n
(define (double n)
(+ n n))
(double 5)
;havle-iter函数的功能是通过迭代获得n的一半的值,guess是初始猜测值
(define (havle-iter guess n)
(cond ((not (integer? n)) (display "error: 原因havle函数的参数是整数\n"))
(( and (< (double guess) n) (<= (double (+ guess 1)) n)) (havle-iter (+ 1 guess) n))
(( and (> (double guess) n)) (havle-iter (- guess 1) n))
(( and (< (double guess) n) (> (double (+ guess 1)) n)) (+ guess 0.5))
((= (double guess) n) guess)))
;havle函数的功能是通过迭代获得n的一半的值,guess是初始猜测值是1
(define (halve n)
(havle-iter 1 n))
(halve 16)
(halve 37)
(halve 35.5)
;even?函数功能是判断n是否是偶数,如果是偶数值为#t,否则为#f
(define (even? n)
(cond ((= n 0) #t)
((= n 1) #f)
((and (integer? n) (< n 0)) (even? (+ n 2)))
((and (integer? n) (> n 1)) (even? (- n 2)))
(else #f)))
(even? 13)
(even? 22)
(even? 22.5)
;*函数的功能是a乘以b
(define (* a b)
(cond ((or (= a 0) (= b 0)) 0)
((= a 1) b)
((even? a) (* (halve a) (double b)))
(else (+ (* (- a 1) (- b 1)) a b -1))))
(* 3 4)