}
num++;
fn();
}
fn();
打印结果为:
知道了递归是什么,那我们再来看看如何利用递归解决问题吧!
[](()二、利用递归求数学题
=========================================================================
[](()1、求1 * 2 * 3 * 4 …*n的阶乘。
代码如下:
function fn(n){
if(n == 1){
return 1;
}
return n*fn(n-1);
}
console.log(‘1-20的阶乘为:’+fn(20));
console.log(‘1-10的阶乘为:’+fn(10));
console.log(‘1-5的阶乘为:’+fn(5));
打印结果为:
[](()2、 求斐波那契数列 。
斐波那契数列,又称为“兔子数列”,指的是这样一个数列:、1、1、2、3、5、8、13、21、34、……,即第三项的值为前两项的加和。用户输入一个n,就可以得到该位置的数。
代码如下:
function fb(n){
if(n === 1 || n === 2){
return 1;
}
return fb(n-1) + fb(n-2);
}
console.log(‘第3项斐波那契数列值为:’+fb(3));
console.log(‘第10项斐波那契数列值为:’+fb(10));
打印结果为:
[](()三、利用递归求:根据id返回对应的数据对象
====================================================================================
有如下所示的对象:
var date = [{
id:1,
name:‘电器’,
goods:[{
id: 11,
gname:‘手机’
},{
id: 12,
gname: ‘电脑’
}]
},{
id:2,
name:‘服饰’,
goods:[{
id : 21,
gname:‘裤子’
},{
id : 22,
gname : ‘外套’
}]
},{
id : 3,
name: ‘食品’
}];
现在要通过输入id返回对应的数据对象。
首先我们可以通过for...Each()
来遍历数组,得到每一项值,如下所示:
function getId(array,id){
array.forEach(function(value){
console.log(value);
})
}
getId(date,1);