【发布时间】:2017-10-03 00:24:27
【问题描述】:
函数应该接受一个整数列表并返回一个包含两个子列表的列表——第一个包含原始列表中的偶数,第二个包含奇数。我的代码完成了工作,但如果我用一个负整数测试它,例如第二个测试中的 -5,它就会被我的代码忽略。关于如何修复的任何想法?
(旁注 - 我知道有偶数、奇数等函数,但对于这个任务,我将自己创建它们。)
(define (segregate lst)
(list(pullEven lst)(pullOdd lst)))
(define (pullEven lst)
(if (empty? lst)
'()
(if (isEven (first lst))
(cons (first lst) (pullEven (rest lst)))
(pullEven (rest lst)))))
(define (pullOdd lst)
(if (empty? lst)
'()
(if (isOdd (first lst))
(cons (first lst) (pullOdd (rest lst)))
(pullOdd (rest lst)))))
(define (isEven x)
(if (equal? (remainder x 2) 0) #t #f)
)
(define (isOdd x)
(if (equal? (remainder x 2) 1) #t #f)
)
;tests
"---------------------------------------------"
"Segregate Tests"
(segregate '(7 2 3 5 8))
(segregate '(3 -5 8 16 99))
(segregate '())
"---------------------------------------------"
【问题讨论】:
-
你看过
partition函数吗? -
提示负数除以2是负数(所以不是1;)