Scheme 在方案中反转数字时参数数目错误
我正试图在Scheme中编写一个程序来反转给定的数字。然而,问题是,尽管我已经正确地实现了递归,但Scheme表示递归调用的参数数量不正确 这个代码有什么问题?为什么我会得到错误论点的错误Scheme 在方案中反转数字时参数数目错误,scheme,lisp,Scheme,Lisp,我正试图在Scheme中编写一个程序来反转给定的数字。然而,问题是,尽管我已经正确地实现了递归,但Scheme表示递归调用的参数数量不正确 这个代码有什么问题?为什么我会得到错误论点的错误 (define (rev revs n) (cond ( (= n 0) 1) (else ( (rev ( ( + (* revs 10) (remainder n 10) ) (quotient n 10) ) ) ) )))
(define (rev revs n)
(cond ( (= n 0) 1)
(else (
(rev ( ( + (* revs 10) (remainder n 10) ) (quotient n 10) ) )
) )))
您有几个错误的括号,基本情况是错误的(您必须返回累加器)。试试这个:
(define (rev revs n)
(cond ((= n 0) revs)
(else
(rev (+ (* revs 10) (remainder n 10)) (quotient n 10)))))
记住,在Scheme中,括号的意思是“函数应用,如果你用
()
包围某个东西,解释器会尝试将里面的东西作为函数应用。在你把()
同样,它也不起作用。我只得到1的输出。那么,算法有问题。问题是语法错误。你用什么参数调用函数?啊!对不起。我的基本情况是错误的。我必须输出revs
。