首页 > 其他 > 详细

SICP:反复用加法来实现乘法 1.17

时间:2015-03-21 15:20:35      阅读:387      评论:0      收藏:0      [点我收藏+]
#lang racket

(define (fast-multiplication a b n);a*n
  (cond ((= n 0) b);n==0
    ((even? n)
     (fast-multiplication (double a)
                  b
                  (halve n)));even? n
    (else
     (fast-multiplication a
                  (+ a b)
                  (- n 1))
     );else

    );cond
  );fast-multiplication  its iteration

(define (fast-multiplication-new a n)
  (cond ((= n 0) 0)
    ((= n 1) a)
    ((even? n) (double (fast-multiplication-new a
                        (halve n))))
   
    (else (a +
         (fast-multiplication-new a 
                      (- n 1)))
     );else
   );cond
  );fast-multiplication-new its recursive

(define (double x)
  (+ x x));double

(define (halve x)
  (/ x
     2)
  );halve

(define (even? x)
  (= (remainder x 
        2)
    0);=
  );even


(fast-multiplication-new 8 0 1)
(fast-multiplication-new 8 0 2)
(fast-multiplication-new 8 0 3)
(fast-multiplication-new 8 0 4)
(fast-multiplication-new 8 0 9)

 

SICP:反复用加法来实现乘法 1.17

原文:http://www.cnblogs.com/wizzhangquan/p/4355571.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!