; division by repeated subtraction
(define (divide n d)
(if (< n d)
0
(+ (divide (- n d) d) 1)))
(display (divide 29 4)) (newline)
(define (divide n d)
(define (divide-helper q r)
(if (< r d)
(values q r)
(divide-helper (+ q 1) (- r d))))
(divide-helper 0 n))
(call-with-values
(lambda () (divide 29 4))
(lambda (q r)
(display q) (newline)
(display r) (newline)))
OyBkaXZpc2lvbiBieSByZXBlYXRlZCBzdWJ0cmFjdGlvbgoKKGRlZmluZSAoZGl2aWRlIG4gZCkKICAoaWYgKDwgbiBkKQogICAgICAwCiAgICAgICgrIChkaXZpZGUgKC0gbiBkKSBkKSAxKSkpCgooZGlzcGxheSAoZGl2aWRlIDI5IDQpKSAobmV3bGluZSkKCihkZWZpbmUgKGRpdmlkZSBuIGQpCiAgKGRlZmluZSAoZGl2aWRlLWhlbHBlciBxIHIpCiAgICAoaWYgKDwgciBkKQogICAgICAgICh2YWx1ZXMgcSByKQogICAgICAgIChkaXZpZGUtaGVscGVyICgrIHEgMSkgKC0gciBkKSkpKQogIChkaXZpZGUtaGVscGVyIDAgbikpCgooY2FsbC13aXRoLXZhbHVlcwogIChsYW1iZGEgKCkgKGRpdmlkZSAyOSA0KSkKICAobGFtYmRhIChxIHIpCiAgICAoZGlzcGxheSBxKSAobmV3bGluZSkKICAgIChkaXNwbGF5IHIpIChuZXdsaW5lKSkp