Scheme 方案说明

Scheme 方案说明,scheme,Scheme,我正在读一本编程语言书,书中要求我解释以下Scheme函数的功能(不确定,有人能帮我解释一下): 它计算嵌套列表结构中的叶节点数,忽略#f。它使用递归过程: 如果输入为空列表,则这是返回0的基本情况 如果输入是一对car不是列表的配对: 如果car是#f,我们在cdr上递归并返回该值 否则,我们将car计算为1,并将其添加到cdr上的递归结果中 最后,我们对car和cdr进行递归,并将它们相加 它计算嵌套列表结构中的叶节点数,忽略#f。它使用递归过程: 如果输入为空列表,则这是返回0的基

我正在读一本编程语言书,书中要求我解释以下Scheme函数的功能(不确定,有人能帮我解释一下):


它计算嵌套列表结构中的叶节点数,忽略
#f
。它使用递归过程:

  • 如果输入为空列表,则这是返回0的基本情况
  • 如果输入是一对
    car
    不是列表的配对:
    • 如果
      car
      #f
      ,我们在
      cdr
      上递归并返回该值
    • 否则,我们将
      car
      计算为1,并将其添加到
      cdr
      上的递归结果中
  • 最后,我们对
    car
    cdr
    进行递归,并将它们相加

它计算嵌套列表结构中的叶节点数,忽略
#f
。它使用递归过程:

  • 如果输入为空列表,则这是返回0的基本情况
  • 如果输入是一对
    car
    不是列表的配对:
    • 如果
      car
      #f
      ,我们在
      cdr
      上递归并返回该值
    • 否则,我们将
      car
      计算为1,并将其添加到
      cdr
      上的递归结果中
  • 最后,我们对
    car
    cdr
    进行递归,并将它们相加

如果我想把它转换成编程语言clojure,我该怎么做?你不觉得自己尝试一下会学到更多吗?如果您有问题,发布一个新问题,我们将帮助您了解哪里出了问题。@user1585656:Clojure是一种类似于lisp语言的Scheme,因此转换它不需要太多工作。这很简单,您应该能够通过在Scheme中查找函数并找到Clojure等价物来实现。如果你在某个特定的问题上陷入困境,就在这里提问,但是如果你先尝试一下,展示一下你所做的,你会得到更多的帮助。如果人们相信你做了你该做的,很多人会帮助你。如果我想把它转换成编程语言clojure,我该怎么做?你不认为自己尝试一下会学到更多吗?如果您有问题,发布一个新问题,我们将帮助您了解哪里出了问题。@user1585656:Clojure是一种类似于lisp语言的Scheme,因此转换它不需要太多工作。这很简单,您应该能够通过在Scheme中查找函数并找到Clojure等价物来实现。如果你在某个特定的问题上陷入困境,就在这里提问,但是如果你先尝试一下,展示一下你所做的,你会得到更多的帮助。如果人们相信你做了你该做的,很多人会帮助你走出困境。
(define (x lis)
  (cond ((null? lis) 0) 
        ((not (list? (car lis))) 
         (cond 
          ((eq? (car lis) #f) (x (cdr lis))) 
          (else (+ 1 (x (cdr lis)))))) 
        (else (+ (x (car lis)) (x (cdr lis))))))