(define (expte b n) (if (= n 0) 1 (* b (expte b (- n 1)))))
;(expte 2 200000);(expt 2 200000)
(define (expta b n) (expta-iter b n 1))
(define (expta-iter b counter product) (if (= counter 0) product (expta-iter b (- counter 1) (* b product))));(expta 2 200000)
(define (fast-expt b n) (cond ((= n 0) 1) ((evena? n) (square (fast-expt b (/ n 2)))) (else (* b (fast-expt b (- n 1))))))
(define (evena? n) (= (remainder n 2) 0))
(define (square x) (* x x))
(fast-expt 2 200000);(remainder 4 3) ;求余
我用的R5RS和书上的MIT-Scheme有些许不同.
我的自带expt函数.经检验这个函数应该是用的第三种方法实现的.
不自带square函数,这是个自乘函数.
自带even?函数 为偶返回true
转载于:https://www.cnblogs.com/R4mble/p/7882689.html
相关资源:JAVA上百实例源码以及开源项目