2014-12-04 105 views
1

我在scheme48中使用以下函数来计算数字是偶数还是奇数。使用尾递归计算数字是偶数还是奇数

(define (odds? x) 
    (if (= x 0) #f 
     ((evens? (- x 1)) 
     ))) 

(define (evens? x) 
    (if (= x 0) #t 
     ((odds? (- x 1)) 
     ))) 

然而在这方面,我收到以下错误:

Error: attempt to call a non-procedure (#t)

我将不胜感激,如果有人能确切地解释这个错误意味着什么,以及如何解决它。

回答

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)))) 
+0

谢谢奥斯卡,看来我犯了一个粗心的错误。 – InfoSecNoob 2014-12-04 23:52:39

+0

@InfoSecNoob不用担心,使用你的IDE或文本编辑器来解决这类问题,经过一些练习后,括号不会造成任何麻烦:) – 2014-12-04 23:54:26

相关问题