【发布时间】:2020-01-04 20:06:26
【问题描述】:
根据我对递归调用的理解,当你通过调用函数进行递归时,该语句需要是一个 return 语句,因为基本上当它从函数堆栈中弹出时,它期望从之前的调用中得到一些值.
我有一些用于插入 BST 的代码
insertCorrectLocation(root, newNode) {
if (newNode.data < root.data) {
if (root.left == null) {
root.left = newNode
} else {
return this.insertCorrectLocation(root.left, newNode)
}
}
else {
if (root.right == null) {
root.right = newNode
} else {
return this.insertCorrectLocation(root.right, newNode)
}
}
}
即使我删除了调用的返回语句,这也有效,例如
else {
if (root.right == null) {
root.right = newNode
} else {
this.insertCorrectLocation(root.right, newNode)
}
}
这是怎么发生的?
【问题讨论】:
标签: javascript algorithm recursion binary-search-tree