Recursion 方案中列表的列表
我有一个从lambda获取的列表,我想创建(并返回)一个包含列表元素的列表。计划不让我这么做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 (-
#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))。