递归是解决重复性问题的一种重要方法,以下是两个基本的递归示例:

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 的完整过程。