在方案中反转数字时参数数量错误
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 括号中表示“函数应用,如果你用 ()
包围某些东西,解释器将尝试将里面的东西作为一个函数来应用。要非常非常小心你把那些 ()
.
我正在尝试在 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 括号中表示“函数应用,如果你用 ()
包围某些东西,解释器将尝试将里面的东西作为一个函数来应用。要非常非常小心你把那些 ()
.