在方案中反转数字时参数数量错误

Wrong number of arguments while reversing a number in scheme

我正在尝试在 Scheme 中编写一个程序来反转给定的数字。然而,问题是虽然我的递归正确,但 Scheme 说我的递归调用的参数数量不正确。

这段代码有什么问题?为什么会出现参数错误的错误?

(define (rev revs n)
    (cond ( (= n 0) 1)
        (else ( 
            (rev ( ( + (* revs 10) (remainder n 10) ) (quotient n 10) ) ) 
            ) )))

你有几个错误的括号,基本情况是错误的(你必须 return 累加器)。试试这个:

(define (rev revs n)
  (cond ((= n 0) revs)
        (else 
         (rev (+ (* revs 10) (remainder n 10)) (quotient n 10)))))

记住,在 Scheme 括号中表示“函数应用,如果你用 () 包围某些东西,解释器将尝试将里面的东西作为一个函数来应用。要非常非常小心你把那些 ().