Scheme将元素的深度获取到递归列表中

时间:2017-05-10 11:03:22

标签: scheme

你好我想过并做了一个练习:

定义一个函数,它接受一个可以包含原子和递归列表的列表作为第一个参数,并作为第二个接受一个原子。原子的价值观不会重演。函数返回将原子放入列表的深度,如果不存在,则返回零。你应该使用list?

 Ejemplo

(profundidad 
‘(c a b (r t) f (1 ((3 4) 5)
 a)
returns:
1  
(profundidad 
‘(c a b (r t) f (1 ((3 4) 5)
 k)
returns:
0  
(profundidad 
‘(c a b (r t) f (1 ((3 4) 5)
 t)
returns:
2  
(profundidad 
‘(c a b (r t) f (1 ((3 4) 5)
 4)
returns:
4  

我的代码:

(define (profundidad L c)
    (cond
        ((null? L) 0)
        ((equal? (car L) c) 1)
        ((list? (car L)) (+ (profundidad (car L) c) 1))
    (else(profundidad (cdr L) c))))

它解析了普通列表,但我如何递归地从内部列表返回?

感谢您的时间!

1 个答案:

答案 0 :(得分:0)

您的问题是,如果public ActionResult Update(IEnumerable<HttpPostedFileBase> files, Sample sample) { var pallet = (Pallet)Session["pallet"]; sample.Pallet = pallet; sample.SaveImages(files); access.UpdateSample(sample); access.UpdateDefects(sample); Session["sample"] = sample; return RedirectToAction("Details", sample.SampleNo); } 上的递归为car,则您需要执行与zero?案例相同的操作。第一个元素为else时应该怎么做:

list?