我是dr racket
的新手,正在尝试编写一个函数,如果
不使用内置功能。</ p>
(define myfunction(lambda (sub subSum count restListSum myList)
(cond
((null? myList) (cond
((= 0 subSum) #f)
((= 0 count) #f)
((= 3(count myList) #t)
((= subSum restListSum) #t)
((myfunction subSum(+ sub)) (car myList)) (+ count 1) (cdr myList)) #t)
((myfunction sub subsum count(cdr myList)) #t)
((myfunction car myList) subsume sub count (cdr myList)) #t)
((and (not (= subSum 0)) (myfunction 1 (car myList) (+ count 1) (cdd myList))) #t)
(else #f))))
答案 0 :(得分:1)
您的代码未通过语法检查。我没有尝试为你解码,而是让我为你提供这个简单的'count'函数定义,它返回列表中的东西数量。这可能有助于您在重新尝试自己的第一次尝试中向前迈出一步。继续尝试!您可以为自己定义两个或三个辅助函数作为起点。您还需要一个以单个参数(列表)为起点的函数。
(define (count theList)
(cond
((null? theList) 0)
(else (+ 1 (count(cdr theList))))))
答案 1 :(得分:0)
我试图坚持你最初的想法并提出以下建议:
(define (myfunc lst)
(define (inner-function lst count sum1-3 sum4-x)
(if (empty? lst)
(cond
((< count 3) 'error)
((= count 3) #t)
(else (= sum1-3 sum4-x)))
(inner-function
(cdr lst)
(+ count 1)
(if (< count 3)
(+ sum1-3 (car lst))
sum1-3)
(if (< count 3)
sum4-x
(+ sum4-x (car lst))))))
(inner-function lst 0 0 0))