JS递归的应用
前言
一、递归是什么?
按照某一包含有限步数的法则或公式对一个或多个前面的元素进行运算,以确定一系列元素(如数或函数)的方法。
二、使用步骤
1.概念解释
按照百度的官方解释递归是一个有限步数,也就是说明递归并不是像某些博客说的那样,无限套娃下去。对一个或多个前面的元素进行运算,这句话的可以理解为我自己调用我自己去做一些事情,而这些事情具有重复性,和有限性,一直到限定条件结束位置,其实也就是经典阶乘思想。
For exmple:举一个烂大家的代码例子,由以下可知,递归是调用了自己以前多个元素的进行了运算,我们把num=5传进去其实就是5! ===5x4X3X2X1。
function Myself(num){
if (num <= 1){
return 1;
} else {
return num * Myself(num-1);
}
}
2.数据信息的应用
在我们用到包含多层次的信息查找,或者对行测类的排位置类型的题型,一定会用到阶乘的思想。,下面我们先介绍一下获取后台json信息过程,以dom数的形式展示
var data = [
{
id: 1,
children:[{
id:2,
children:[]
}]
},
{
id:3,
children:[]
},
{
id:4,
children:[
{
id:5,
children:[
{
id:6,
children:[]
},
{
id:7,
children:[]
}
]
}
]
}
]
function forEachData(data){
var str = '<ul>'
for(var i=0;i<data.length;i++){
str+=`<li>${data[i].id}<li/>`
if(data[i].children){
str+= forEachData(data[i].children)
}
}
str + ='<ul/>'
return str
}
div.innerHTMl= forEachData(data)
展示效果图
总结
通过了解递归我们可以解决经典排位置问题,假如例:甲、乙、丙、丁、戊五个人排成一列,共有多少种不同的排列方法?
从后台获取一大串json数据信息,我们可以通过大量套for循环进行解决,也可以通过递归思想来解决这些问题,其实编程的思想就是对现实世界一个模拟抽象的过程。