JS函数递归案例
在学习案例前先了解下JavaScript中函数的用法有哪些。
1.函数的概念:函数是封装了一段可被重复调用执行的代码块。
2.常用的声明方式(字面量创建)为:
function 函数名(){
代码块
}
调用方式为:
函数名();
3.函数的参数分为形参、实参两种,形参是用来函数定义是设接收调用传入,实参是用来函数调用时传入小括号里面的真实数据。
4.函数的返回值:return 返回值;
之前在循环的案例中例子中利用for循环实现斐波拉契数列1、1、2、3、5…(第三项开始,前两项和等于第三项);代码逻辑是将第二项数先赋值给一个临时变量,第一二项相加数(作为下一轮的第二项),将临时变量赋值给这一轮的前一个数(作为下一轮的第一项)。具体代码如下:
/*3.求Fibonacci数列40个数.这个数列特点为,第1,2两个数为1,1,从第三个数开始,
该数是前面两个数的和.即1,1,2,3,5,8,13,21…..*/
var a = 0,
b = 1;
for (var i = 0; i < 40; i++) {
c = a; //上一个a 0 1 1
a = a + b; // 1 1 2
b = c; // 0 1 1
document.write((i + 1) + ":" + a + "<br/>");
}
在函数中,递归的用法是直接或间接的调用自身。
斐波那契算法:从第三项开始,值等于前两项之和:1、1、2、3、5、8、13、18…可以用以下表达式表示,show为函数名。
show(n)=show(n-1)+show(n-2);
var n = Number(prompt("请输入斐波拉契数列个数"));//接收用户输入的要显示的斐波拉契数列
function show(n) {
if (n == 1 || n == 2) {
//一二项返回1
return 1;
}
return show(n - 2) + show(n - 1);//三项项之后返回前两项的和
}
for (var i = 1; i <= n; i++) {
console.log(show(i));//循环输出没一项的值
}
例如斐波拉契数列第五项的运行栈的执行顺序如下