此方法完全可以正常工作,但是我不允许仅使用let,loop,set等进行递归。
(define (convert k n)
(let loop ((k k) (acc '()))
(if (zero? (quotient k n))
(cons (modulo k n) acc)
(loop (quotient k n) (cons (modulo k n) acc)))))
;;For example:
(convert 70 4) ;;-> Returns(list 1 0 1 2)
我当前的尝试无法正常工作:
(define (convert k n)
(cond
[(<= k n) (cons (modulo k n) empty)]
[(> k n) (append (list (modulo k n))
(convert (floor (/ k n))n))]))
(convert 70 4) ;;-> Returns(list 2 1 0)
(define (convert k n [acc '()])
(if (zero? (quotient k n))
(cons (modulo k n) acc)
(convert (quotient k n) n (cons (modulo k n) acc))))