Решение упражнения 1.17 из SICP

29 August, 2007 (20:08) | Решения упражнений

В этом упражнении все просто. Ниже приведен код процедуры.

(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