我的函数只返回第一个元素——我的基本情况。也许我的递归错了,也许我需要一些关于 lisp 函数的帮助。
该函数需要返回转换为十进制的二进制列表中所有元素的总和。我选择先将列表中的每个元素转换为十进制,然后在转换后添加其余元素。我有 2 个功能。第一个效果很好, convertToBinary :
(define (binaryToDecimal n)
(cond [(zero? n) 0]
[else (+ ( * 2 (binaryToDecimal (quotient n 10)))
(remainder n 10))]
))
第二个不太好:
(define (addBinary binaryList)
(cond [(null? (cdr '(binaryList))) (binaryToDecimal (car binaryList))]
[else
(cons (+ (binaryToDecimal (car binaryList))
(addBinary (cdr '(binaryList)))))]
))
如果我用这个调用函数:
(addBinary '(1101 111 10 101))
然后我得到: 13。这是 1101(我列表中的第一个元素)的十进制转换。我认为显然问题出在我的其他情况下,但我没有看到问题并希望得到一些帮助。我四处搜索并阅读到使用“cons”将构造(可以这么说)列表中的元素以及应用的更改。不确定这是否正确。谢谢!