Решение упражнения 1.17 из SICP
В этом упражнении все просто. Ниже приведен код процедуры.
(define (fast-* a b) (cond ((= b 0) 0) ((= b 1) a) ((even? b) (double (fast-* a (halve b)))) (else (+ a (fast-* a (- b 1))))))
Comments
Comment from лина
Date: May 23, 2008, 7:31 am
можно ли опубликовать подробно с примерами. Я блондинка и начинающий программист:)
Comment from Piter
Date: June 19, 2008, 12:16 pm
спасибо, долго ломал голову, над этой задачкой. теперь стало понятно, где я ошибся.
Comment from гена
Date: June 26, 2008, 9:42 am
хороший пример. как говориться все гениальное-просто.
Comment from meduza
Date: October 19, 2008, 11:17 am
на 1 проверять желательно, но не обязательно.
Comment from vovka
Date: March 10, 2010, 12:49 pm
если b меньше 0, не работает
Comment from Ayrat
Date: April 1, 2010, 11:41 am
У меня попроще:
(define (** a b)
(cond ((= b 0) 0)
((even? b) (** (double a) (halve b)))
(else (+ a (** a (- b 1))))))
Comment from Dmitri
Date: July 25, 2010, 5:58 pm
В вашем примере это: ((= b 1) a)
лишнее. Можно без него
Write a comment