我使用scheme48中的以下函数来计算数字是偶数还是奇数。
(define (odds? x)
(if (= x 0) #f
((evens? (- x 1))
)))
(define (evens? x)
(if (= x 0) #t
((odds? (- x 1))
)))
然而,在这样做时,我收到以下错误:
错误:尝试调用非过程 (#T)
如果有人能够解释这个错误究竟意味着什么,以及如何解决它,我将不胜感激。
答案 0 :(得分:2)
最后一次函数调用有一些错误的()
,可以改进格式。请记住,在Scheme中,一对()
表示“函数应用程序”(它解释了错误消息attempt to call a non-procedure
),因此您必须小心放置它们。试试这个:
(define (odds? x)
(if (= x 0)
#f
(evens? (- x 1))))
(define (evens? x)
(if (= x 0)
#t
(odds? (- x 1))))