我想从列表中获取最长子列表的大小。从计划列表中获取最长子列表的大小
例如
(getlongest((A)B(demn)(AD(cmgcyumld)一)))
返回9自(cmgcyumld)具有尺寸9.
我写这功能
(define getlongest
(lambda (ls)
(cond
((null? ls)0)
(else
(cond
((atom? (car ls))
(+ 1 (getlongest (cdr ls))))
(else
(max (getlongest(car ls)) (getlongest(cdr ls)))))))))
但是如果我写
(getlongest ((a) (a (d d d e) m)))
我得到5.任何人都可以帮我解决这个问题吗?
感谢
如果您跟踪通过与笔的节目的原因是很明显的和纸张。我建议你这样做,然后用你的发现来更新这个问题。提示:1.考虑如何在封面下形成列表。 2.(+ 1(getlongest(cdr ls)))'不符合你的期望,因为定义了'getlongest'的方式。 –
我知道有很多人发布作业,以便其他人可以为他们解决它。就我而言,我是这个初学者,花了我几个小时才想出这个错误的解决方案。如果我发布这个问题是因为我非常渴望找到解决方案。我已经通过几次纸质追踪迭代,我知道有什么不对,但我不知道如何解决。我正在努力提高我的技能,但我没有太多选择。我将通过一轮纸质追踪,看看我是否找到新的东西。 – locorecto
在这种情况下,用mquander的答案作为起点。 :-)如果你喜欢,追踪他们的版本,看看它与你的不同;尽管如此,姆坎德尔的回答已经详细解释了区别。 –