summaryrefslogtreecommitdiff
path: root/coding-exercises/1/chapter116.rkt
diff options
context:
space:
mode:
authorMike Vink <mike1994vink@gmail.com>2023-03-03 09:33:13 +0100
committerMike Vink <mike1994vink@gmail.com>2023-03-03 09:33:13 +0100
commit0988f106514e61b59f53e7fe3c599e03edcfd47c (patch)
treef8faeb9e9d5047828c7c386eb4db363212e52cb6 /coding-exercises/1/chapter116.rkt
parentb99dd822372b63c994bb97ff9971cfc64c721552 (diff)
folder
Diffstat (limited to 'coding-exercises/1/chapter116.rkt')
-rw-r--r--coding-exercises/1/chapter116.rkt16
1 files changed, 16 insertions, 0 deletions
diff --git a/coding-exercises/1/chapter116.rkt b/coding-exercises/1/chapter116.rkt
new file mode 100644
index 0000000..e4f1e7d
--- /dev/null
+++ b/coding-exercises/1/chapter116.rkt
@@ -0,0 +1,16 @@
+(define (square x) (* x x))
+
+(define (fast-expt b n)
+ (cond ((= n 0) 1)
+ ((even? n) (square (fast-expt b (/ n 2))))
+ (else (* b (fast-expt b (- n 1))))))
+
+(define (fie a b n)
+ (cond ((= n 0) a)
+ ((even? n) (fie a (square b) (/ n 2)))
+ (else (fie (* a b) b (- n 1)))))
+
+(define (fast-expt b n)
+ (fie 1 b n))
+
+(fast-expt 5 5)