1.递归求阶乘
//求阶乘
function factorial(n) {
if (n == 1) {
return 1;
}
return n * factorial(n - 1);
}
factorial(4);
第一次调用:n=3,进入函数factorial,先进行判断,此时 4 != 1,则返回 4 * factorial(3) 第二次调用:n=3,进入函数factorial,先进行判断,此时 3 != 1,则返回 3 * factorial(2) 第三次调用:n=2,进入函数factorial,先进行判断,此时 2 != 1,则返回 2 * factorial(1) 第四次调用:n=1,进入函数factorial,先进行判断,此时 1 == 1,则返回 1 合起来则为 :
4 * factorial(3)
4 * (3 * factorial(2))
4 * (3 * (2 * factorial(1)))
4 * (3 * (2 * 1))
4 * (3 * (2))
4 * (6)
24
故得出结果为24
2.阶乘求和
//求阶乘和
function factorialSum(n) {
var sum = 0;
for (var i = 1; i <= n; i++) {
sum += factorial(i);
}
return sum;
}
factorialSum(4);
过程为:
sum = 0 + factorial(1)
sum = 0 + factorial(1) + factorial(2)
sum = 0 + factorial(1) + factorial(2) + factorial(3)
sum = 0 + factorial(1) + factorial(2) + factorial(3) + factorial(4)
故阶乘和为: 0 + 1 + 2 + 6 + 24 = 33
利用递归函数求斐波那契数列(兔子序列): 1、1、2、3、5、8、13、21...
function FibonacciSequence(n) {
if (n == 1 || n == 2) {
return 1;
} else {
return FibonacciSequence(n - 1) + FibonacciSequence(n - 2);
}
}