在Scheme中添加嵌套列表的总和

时间:2015-09-27 11:57:46

标签: scheme racket nested-lists

我正在使用计划。我找到某个列表的总和没有问题,但是当列表中有列表或AKA嵌套列表时,我很难添加总和。

(define (my-summation li)
(if (null? li)
  0
  ((if (list? (car li)) (my-summation (car li))
  (+ (car li) (my-summation (cdr li)))))))

这是我的输入,这是错误的结果。 Scheme是我的弱点,因为它涉及递归,但我似乎无法找到问题。

> (my-summation '(6 3 -2 5 '(4 2 -3) 4 )) 
function call: expected a function after the open parenthesis, but received -3

2 个答案:

答案 0 :(得分:2)

它在括号中,你在if附近有一个额外的集合。此外,当它在引用列表中时,您不需要引用列表。并且(list? (car li))案例不正确,它应该对元素和列表的其余部分求和。

(define (my-summation li)
  (if (null? li)
      0
      (if (list? (car li))
          (+ (my-summation (car li)) (my-summation (cdr li)))
          (+ (car li) (my-summation (cdr li))))))

(my-summation '(6 3 -2 5 (4 2 -3) 4))

结果总和为19

答案 1 :(得分:1)

另一种解决方案:

class foo
{
    public List<bar> bars = new List<bar>();
}

class bar
{
    public List<qux> qux = new List<qux>();
}

class qux
{
    public string hash { get; set; }
    public int size { get; set; }
}