我正在按照这个伪代码将十进制递归转换为二进制。
findBinary(decimal)
if (decimal == 0)
binary = 0
else
binary = decimal % 2 + 10 * (findBinary(decimal / 2)
Run Code Online (Sandbox Code Playgroud)
这是我尝试过的:
(defn binary [n]
(loop [res 0]
(if (= n 0)
res
(recur (res (* (+ (mod n 2) 10) (binary (quot n 2)))) )
)
)
)
Run Code Online (Sandbox Code Playgroud)
但我收到此错误:
ClassCastException java.lang.Long cannot be cast to clojure.lang.IFn user/binary (form-init9002795692676588773.clj:6)
Run Code Online (Sandbox Code Playgroud)
任何想法如何修复代码以完成任务?
我意识到,这是关于旅程而不是结果。但是要提到的是:Long/toString
可以为您提供一个带有各种基数的数字的字符串。
(Long/toString 123 2)
; ? "1111011"
Run Code Online (Sandbox Code Playgroud)