例如,下面是一个使用递归定义的树形结构的例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
type TreeNode<T> = {
value: T;
children: TreeNode<T>[];
};

const tree: TreeNode<string> = {
value: "root",
children: [
{
value: "child1",
children: [
{
value: "grandchild1",
children: [],
},
{
value: "grandchild2",
children: [],
},
],
},
{
value: "child2",
children: [],
},
],
};

在这个例子中,我们定义了一个TreeNode类型,它包含一个值和一个子节点数组。子节点数组也是一个 TreeNode 类型,这就形成了一个递归结构。我们可以使用这个类型来描述一个树形结构,其中每个节点可以有任意数量的子节点,也可以没有子节点。

这种递归结构特性可以用于解决很多问题,例如遍历树形结构、计算树的深度、判断树是否平衡等问题。同时,递归结构也可能会导致性能问题,因此在实际使用中需要注意递归深度的限制和性能优化。