【问题标题】:How to count the number of statements in a list in Scheme [closed]如何计算Scheme列表中的语句数量[关闭]
【发布时间】:2012-11-15 15:41:59
【问题描述】:

statement -> if bool then statement_list -> while bool statement_list -> id = expression

所以如果输入:((id = id + id)(if bool then (if bool then (id = id + id))(id = const / const)(id = id + id))(while bool ( id = id - const)(id = id - id)))

语句数应为 9。

【问题讨论】:

    标签: scheme racket


    【解决方案1】:

    方案是谐音的。无法区分表示 Scheme 代码(例如语句)的列表和表示数据的列表,因为 Scheme 代码 Scheme 数据。但是,当然可以计算一个列表中包含多少个列表,这可以通过以下函数来完成。

    (define (list-count list)
      (cond ((null? list) 0)
            ((list? (car list))
             (+ (list-count (car list)) 
                (list-count (cdr list))
                1))
            (else (list-count (cdr list)))))
    

    根据您的规范,当给出您问题中的列表时,这将返回 9

    > (list-count '((id = id + id)(if bool then (if bool then ( id = id + id ))(id = const / const)(id = id + id))(while bool (id = id - const)(id = id - id))))
    9
    

    【讨论】:

      猜你喜欢
      • 2021-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多