SICP习题 1.2.4 (求幂)

mac2022-06-30  22

(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上百实例源码以及开源项目
最新回复(0)