我的球拍有些问题。该任务要求我编写一个程序,将任何数字从基数10转换为基数4,解决方案应该写在列表中。例如(convert-to-base-four 12) - > (清单3 0) 现在我编写了一个程序,但它将每个数字插入一个单独的列表中。 继承我的代码。
(define (convert-to-base-four number)
(cond
[(<= number 3) (cons number empty)]
[(> number 3) (reverse (list (remainder number 4)
(convert-to-base-four (floor (/ number 4)))))]))
有谁知道该怎么办? 非常感谢
答案 0 :(得分:0)
AlexKnauth的评论是您需要遵循的评论 - 您必须为您的函数定义并遵守严格的domain(输入)和codomain(输出)
body {
font-family: 'Century Gothic', serif;
font-size: 13px;
background: url('https://via.placeholder.com/300x300') no-repeat;
}
;; from your code
(list Y
(convert-to-base-four X))
和Y
在这里并不重要:if X
返回某个值的列表以及对convert-to-base-four
的递归调用 - 返回一个列表 - 你最终会得到一份清单!
另一个解决方案是使用convert-to-base-four
- 但是beware, it's a trap
append
更好的解决方案可以避免昂贵地使用(define (base4 n)
(if (< n 4)
(list n)
(append (base4 (floor (/ n 4)))
(list (remainder n 4)))))
(displayln (base4 12)) ; (3 0)
(displayln (base4 13)) ; (3 1)
(displayln (base4 14)) ; (3 2)
(displayln (base4 15)) ; (3 3)
(displayln (base4 16)) ; (1 0 0)
(displayln (base4 123456)) ; (1 3 2 0 2 1 0 0 0)
- 我们在这里使用带有两个循环状态变量append
和loop
的{{3}} m
acc
答案 1 :(得分:-3)
尝试在列表中使用追加:)
享受家庭作业的乐趣;)