Ethiopian multiplication: Difference between revisions
Content added Content deleted
No edit summary |
|||
Line 2,820: | Line 2,820: | ||
print(ethiopicmult(17, 34, TRUE))</lang> |
print(ethiopicmult(17, 34, TRUE))</lang> |
||
=={{header|Racket}}== |
|||
<lang Racket> |
|||
#lang racket |
|||
(define (halve i) (quotient i 2)) |
|||
(define (double i) (* i 2)) |
|||
;; `even?' is built-in |
|||
(define (ethiopian-multiply x y) |
|||
(cond [(zero? x) 0] |
|||
[(even? x) (ethiopian-multiply (halve x) (double y))] |
|||
[else (+ y (ethiopian-multiply (halve x) (double y)))])) |
|||
(ethiopian-multiply 17 34) ; -> 578 |
|||
</lang> |
|||
=={{header|Rascal}}== |
=={{header|Rascal}}== |