递归是解决重复性问题的一种重要方法,以下是两个基本的递归示例:
1. 阶乘
阶乘(Factorial)是数学中的一个常见问题:阶乘(n) = n * 阶乘(n - 1)
,并且阶乘(1) = 1
。
示例代码:
function factorial(n) {
if (n == 1) {
return 1;
} else {
return n * factorial(n - 1);
}
}
调用 factorial(4)
将返回 24
,因为 factorial(4) = 4 * 3 * 2 * 1
。
2. 解决河内塔之谜
河内塔问题是一个经典的递归问题,它通过递归调用来完成将圆盘从源柱移动到目标柱的操作。
示例代码:
function hanoi(disc, src, aux, dst) {
if (disc > 0) {
hanoi(disc - 1, src, dst, aux);
console.log('Move disc ' + disc + ' from ' + src + ' to ' + dst);
hanoi(disc - 1, aux, src, dst);
}
}
当调用 hanoi(3, 'A', 'B', 'C')
时,将会输出将三个圆盘从柱子 A 移动到柱子 C 的完整过程。
暂无评论