Scheme—列表中与0求和的数的总和

Scheme—列表中与0求和的数的总和,scheme,Scheme,我正在尝试实现一个递归函数(SUMMES cero),该函数给定一个整数列表,它将打印所有可能的连续数的总和为0的序列 例1: (零和’(42-3-104)) =>(-3-104) (0) 例2: (零和’(34-731-4-2-2)) =>(34-7) (4-7 3) (-7313) (3 1-4) (31-4-2-2) (3 4-7 3 1 3 1-4-2-2)您的函数需要有一个具有1参数的助手。可用号码列表,2。目前的数字是3。到目前为止总和为零的组合结果列表。下面是我应该怎么做的,为了不

我正在尝试实现一个递归函数(SUMMES cero),该函数给定一个整数列表,它将打印所有可能的连续数的总和为0的序列

例1:

(零和’(42-3-104))

=>(-3-104)

(0)

例2:

(零和’(34-731-4-2-2))

=>(34-7)

(4-7 3)

(-7313)

(3 1-4)

(31-4-2-2)


(3 4-7 3 1 3 1-4-2-2)

您的函数需要有一个具有1参数的助手。可用号码列表,2。目前的数字是3。到目前为止总和为零的组合结果列表。下面是我应该怎么做的,为了不让我们做作业,我省略了一些部分:

(定义(和零lst)
插入e,使生成的列表
;;(插入3'(1 3 4));==>(1 3 3 4)
(定义(插入e lst)
)
主要逻辑
(定义(辅助对象lst acc res)
(如果(空?lst)
物件
(出租*((新acc(插入(车辆lst)acc))
(如有的话)
(新行政协调会决议)
(res)
;调用助手跳过结果中的当前元素
;并将其作为第二次通话的结果,包括它
(助手(cdr lst)
新行政协调会
(助手(cdr lst)acc res(()())))
;注意()已经在结果中
(助手lst'()'(()))
测试它很简单。虽然我得到的结果比你多,但我相信这是正确的:

(零和’(34-731-4-2-2))
; ==> ((-7 -4 -2 -2 1 1 3 3 3 4)
;      (-7 -4 -2 3 3 3 4)
;      (-7 -2 -2 1 1 3 3 3)
;      (-7 -4 1 1 3 3 3)
;      (-7 -2 3 3 3)
;      (-7 -2 -2 1 3 3 4)
;      (-7 -4 1 3 3 4)
;      (-7 -2 1 1 3 4)
;      (-7 3 4)
;      (-4 -2 1 1 4)
;      (-4 -2 -2 1 3 4)
;      (-2 -2 4)
;      (-4 4)
;      (-7 1 3 3)
;      (-4 -2 -2 1 1 3 3)
;      (-4 -2 3 3)
;      (-2 1 1)
;      (-2 -2 1 3)
;      (-4 1 3)
;      ())