js递归理解及使用案例
// 使用递归函数计算阶乘
function factorial(n) {
if (n === 0 || n === 1) {
return 1;
}
return n * factorial(n - 1);
}
// 使用递归遍历树形结构
function traverseTree(node) {
if (node === null) {
return;
}
console.log(node.value); // 处理当前节点
traverseTree(node.left); // 遍历左子树
traverseTree(node.right); // 遍历右子树
}
// 使用递归求解斐波那契数列
function fibonacci(n) {
if (n <= 1) {
return n;
}
return fibonacci(n - 1) + fibonacci(n - 2);
}
// 示例:计算4的阶乘
console.log(factorial(4)); // 输出: 24
// 示例:遍历二叉树
/* 假设二叉树的节点定义如下:
{
value: 'A',
left: {
value: 'B',
left: { value: 'D', left: null, right: null },
right: { value: 'E', left: null, right: null }
},
right: {
value: 'C',
left: { value: 'F', left: null, right: null },
right: null
}
}
*/
const tree = { /* 节点定义 */ };
traverseTree(tree); // 输出节点值的顺序可能是: D, B, E, A, F, C
// 示例:计算斐波那契数列前5项
console.log(fibonacci(0)); // 输出: 0
console.log(fibonacci(1)); // 输出: 1
console.log(fibonacci(2)); // 输出: 1
console.log(fibonacci(3)); // 输出: 2
console.log(fibonacci(4)); // 输出: 3
这段代码展示了递归在不同情境下的应用:阶乘计算、二叉树的递归遍历和斐波那契数列的计算。每个函数都通过简单的条件判断来递归调用自身,直到满足终止条件。
评论已关闭