Recursion 从递归数据结构生成字符串
使用上面的定义。我们必须创建一个函数,该函数可以生成二级数据结构,并输出一个字符串,该字符串是结构右侧的所有字母 使结构递归非常容易:Recursion 从递归数据结构生成字符串,recursion,data-structures,racket,typed-racket,Recursion,Data Structures,Racket,Typed Racket,使用上面的定义。我们必须创建一个函数,该函数可以生成二级数据结构,并输出一个字符串,该字符串是结构右侧的所有字母 使结构递归非常容易: define-type StringTree (U StringNode 'SEmpty)) (define-struct StringNode ([val : String] [left : StringTree] [right : StringTree])) 但是我不知道如何只将右侧的字符串输出为一个附加字符串 函数的大部分结构已
define-type StringTree (U StringNode 'SEmpty))
(define-struct StringNode
([val : String]
[left : StringTree]
[right : StringTree]))
但是我不知道如何只将右侧的字符串输出为一个附加字符串 函数的大部分结构已经存在。您只需要知道在基本情况下要做什么,在递归情况下要做什么。您将返回由
string append
生成的字符串,而不是StringNode
val
已经是一个字符串,递归调用函数也会得到一个字符串,因此您所要做的就是将它们附加在一起。函数的大部分结构已经存在。您只需要知道在基本情况下要做什么,在递归情况下要做什么。您将返回由string append
生成的字符串,而不是StringNode
val
已经是一个字符串,递归调用函数也会得到一个字符串,所以您所要做的就是将它们附加在一起
(: mirror : StringTree -> StringTree)
(define (mirror a)
(match a
['SEmpty 'SEmpty]
[(StringNode val left right)
(StringNode val (mirror left) (mirror right))]))