Recursion 方案中列表的列表

Recursion 方案中列表的列表,recursion,scheme,racket,set-union,Recursion,Scheme,Racket,Set Union,我有一个从lambda获取的列表,我想创建(并返回)一个包含列表元素的列表。计划不让我这么做 #lang racket (define omega (lambda (n) (if (= n 0) 'Φ (cons (omega (- n 1)) '(omega (- n 1)))))) 以下是两个输出: > (omega 0) 'Φ > (omega 1) '(Φ omega (- n 1)) > (omega 2) '((Φ omega (-

我有一个从lambda获取的列表,我想创建(并返回)一个包含列表元素的列表。计划不让我这么做

#lang racket
(define omega
  (lambda (n)
    (if (= n 0) 'Φ
        (cons (omega (- n 1)) '(omega (- n 1))))))
以下是两个输出:

>  (omega 0)
'Φ
> (omega 1)
'(Φ omega (- n 1))
> (omega 2)
'((Φ omega (- n 1)) omega (- n 1))
第一个输出是正确的,但我希望第二个输出是:

'(Φ '(Φ))
(ω2)将返回

'(Φ '(Φ) '(Φ '(Φ)))
事实上,我想要的结果,用数学符号,是:

ω(n)  =  If n=0 return ϕ, else, return ω(n-1)∪{ω(n-1)}

要获得所需的输出,首先将其更改为

(define omega
  (lambda (n)
    (if (= n 0) 'Φ
        (cons (omega (- n 1)) 
          ;; '(omega (- n 1))
              (list 'quote (omega (- n 1)))
              ))))
这并不能产生您想要的结果,但最重要的是,您希望包含对嵌套代码求值的结果,而不是像您所做的那样包含代码本身


在你写的评论中,你真正想要的是

ω n  =  IF  n=0  THEN  ϕ  ELSE  ω(n-1)∪{ω(n-1)}
这实际上可以翻译为

(define omega
  (lambda (n)
    (if (= n 0) (list 'Φ)        ; must enclose it in a list to avoid errors
        (append (omega (- n 1))
                (list (omega (- n 1)))))))
产生

“(Φ)
“(Φ(Φ))
'(Φ(Φ)(Φ(Φ)))


在DrRacket中。

要获得所需的输出,首先将其更改为

(define omega
  (lambda (n)
    (if (= n 0) 'Φ
        (cons (omega (- n 1)) 
          ;; '(omega (- n 1))
              (list 'quote (omega (- n 1)))
              ))))
这并不能产生您想要的结果,但最重要的是,您希望包含对嵌套代码求值的结果,而不是像您所做的那样包含代码本身


在你写的评论中,你真正想要的是

ω n  =  IF  n=0  THEN  ϕ  ELSE  ω(n-1)∪{ω(n-1)}
这实际上可以翻译为

(define omega
  (lambda (n)
    (if (= n 0) (list 'Φ)        ; must enclose it in a list to avoid errors
        (append (omega (- n 1))
                (list (omega (- n 1)))))))
产生

“(Φ)
“(Φ(Φ))
'(Φ(Φ)(Φ(Φ)))


在DrRacket中。

您遇到问题的代码是什么?你的代码有什么问题?你收到错误信息了吗?错误消息是什么?你得到的结果不是你期望的结果吗?你期望得到什么样的结果?为什么?你会得到什么样的结果?两者有什么不同?你观察到的行为是否不是期望的行为?期望的行为是什么?为什么?观察到的行为是什么?它们有什么不同?请提供一个“Scheme不允许我这样做”的错误描述不够精确,我们无法帮助您。什么不起作用?它怎么不起作用?你的代码有什么问题?你收到错误信息了吗?错误消息是什么?你得到的结果不是你期望的结果吗?你期望得到什么样的结果?为什么?你会得到什么样的结果?两者有什么不同?你观察到的行为是否不是期望的行为?期望的行为是什么?为什么?观察到的行为是什么?它们以什么方式不同?您能否提供您希望发生的行为的精确说明,包括任何和所有规则、这些规则的例外情况、拐角情况、特殊情况、边界情况和边缘情况?您能否提供示例输入和输出,以演示在正常情况下,以及在所有异常、拐角情况、特殊情况、边界情况和边缘情况下,您预期会发生什么?请同时确保提供。请发布您的代码和错误消息。你的代码,而不是代码的照片。这是一个编程网站,不是摄影网站。我们希望复制、粘贴和调试您的代码,而不是批评其颜色和组成。你希望每个人都能帮助你尝试从一张小图片中破译代码,然后输入。我在问题的最后一行放了一个程序的屏幕截图。我想在数学中得到的结果是:如果n=0,返回φ,否则返回ω(n-1)∪{ω(n-1)}。在方案中,它被转换为:如果n=0,则返回一个(ω(-n1))的并集列表,该列表包含一个单变量(ω(-n1))。您遇到问题的代码是什么?你的代码有什么问题?你收到错误信息了吗?错误消息是什么?你得到的结果不是你期望的结果吗?你期望得到什么样的结果?为什么?你会得到什么样的结果?两者有什么不同?你观察到的行为是否不是期望的行为?期望的行为是什么?为什么?观察到的行为是什么?它们有什么不同?请提供一个“Scheme不允许我这样做”的错误描述不够精确,我们无法帮助您。什么不起作用?它怎么不起作用?你的代码有什么问题?你收到错误信息了吗?错误消息是什么?你得到的结果不是你期望的结果吗?你期望得到什么样的结果?为什么?你会得到什么样的结果?两者有什么不同?你观察到的行为是否不是期望的行为?期望的行为是什么?为什么?观察到的行为是什么?它们以什么方式不同?您能否提供您希望发生的行为的精确说明,包括任何和所有规则、这些规则的例外情况、拐角情况、特殊情况、边界情况和边缘情况?您能否提供示例输入和输出,以演示在正常情况下,以及在所有异常、拐角情况、特殊情况、边界情况和边缘情况下,您预期会发生什么?请同时确保提供。请发布您的代码和错误消息。你的代码,而不是代码的照片。这是一个编程网站,不是摄影网站。我们希望复制、粘贴和调试您的代码,而不是批评其颜色和组成。你希望每个人都能帮助你尝试从一张小图片中破译代码,然后输入。我在问题的最后一行放了一个程序的屏幕截图。我想在数学中得到的结果是:如果n=0,返回φ,否则返回ω(n-1)∪{ω(n-1)}。在方案中,它被转换为:如果n=0,则返回一个(ω(-n1))的并集列表,该列表包含一个单变量(ω(-n1))。