递归 函数
创始人
2024-02-09 10:31:51
0

递归 

1,什么是递归函数:如果一个函数在内部可以调用其本身,那么这个函数就是递归函数

 2,简单理解函数内部自己调用自己,这个函数就是递归函数

 3,递归函数的作用和循环效果一样

  死递归写法:

function fn() {fn();}fn();

        一般写法:递归里面必须加退出条件

var num = 1;function fun() {console.log("打印5句话");if (num == 6) {return;     //递归里面必须加退出条件}num++;fn();}fn();

  利用递归函数求1-n的阶乘1*2*3*4*5*..n 

 function fn(n) {if (n == 1) {return 1;}return n * fn(n - 1)}console.log(fn(3));  // 6console.log(fn(4));  // 24//详细分析:假如用户输入的是3// return 3 * fn(3 - 1)// return 3 * fn(2)// return 3 * (2 * fn(1))// return 3 * (2 * 1)// return 3 * (2)// return 6

利用递归函数求斐波那契数列(兔子序列)1,1,2,3,5,8,13,21.....

用户输入一个数字n就可以求出 这个数字对应的兔子序列值

我们只要知道用户输入是n,前面两项(n-1  n-2 )就可以计算出n 对应的序列值

function fb(n) {if (n === 1 || n === 2) {return 1;}return fb(n - 1) + fb(n - 2)}console.log(fb(3));  //2console.log(fb(6));  //8

利用递归遍历数据 

data数组中有两个对象1与2,1中又有两个对象11与12

var data = [{id: 1,name: '家电',goods: [{ id: 11, name: '冰箱' }, { id: 12, name: '洗衣机' }]}, {id: 2,name: '服饰'}];

   需求:我们想输入id号就可以拿到返回的数据对象

   1,利用forEach 去遍历里面的每一个对象 

 function getID(json, id) {json.forEach(function (item) {// console.log(item);  //2个数组元素if (item.id == id) {console.log(item);//2,我们想要得到里层的数据  11  12  可以用递归函数来做//里面要有goods这个数组并且数组的长度不为0} else if (item.goods && item.goods.length > 0) {getID(item.goods, id);}})}console.log(getID(data, 1));console.log(getID(data, 2));console.log(getID(data, 11));console.log(getID(data, 12));

根据上面的只是打印,现在要求数据返回给我们
 

var data = [{id: 1,name: '家电',goods: [{id: 11,name: '冰箱',goods: [{id: 111,name: '海尔冰箱'}, {id: 112,name: '美的洗衣机'}]}, {id: 12, name: '洗衣机'}]}, {id: 2, name: '服饰'}];//想输入id号就可以拿到返回的数据对象//1,利用forEach 去遍历里面的每一个对象function getID(json, id) {var o = {};json.forEach(function (item) {// console.log(item);  //2个数组元素if (item.id == id) {// console.log(item); 不需要打印直接保存给o就可以了o = item//2,我们想要得到里层的数据  11  12  可以用递归函数来做//里面要有goods这个数组并且数组的长度不为0} else if (item.goods && item.goods.length > 0) {o = getID(item.goods, id);}});return o;}// getID(data, 1)// getID(data, 2)// getID(data, 11)// getID(data, 12)console.log(getID(data, 1));console.log(getID(data, 2));console.log(getID(data, 11));console.log(getID(data, 12));console.log(getID(data, 111));console.log(getID(data, 112));































 

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...