首页IT科技递归算法和经典递归例子(复习+学习 递归)

递归算法和经典递归例子(复习+学习 递归)

时间2025-09-09 12:52:15分类IT科技浏览6141
导读:我们继续递归的一个问题,有闭包没有递归怎么能行...

我们继续递归的一个问题                 ,有闭包没有递归怎么能行

1.

第一个递归的案例就是用递归求阶乘                         ,这应该是典中典了吧

2.

有阶乘         ,那就必须要有斐波拉契亚数列        ,这两个呢其实就是拿来熟悉递归的                         ,别看简单                 ,其实要理解透也要点逻辑能力的        ,还是挺不容易的

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <script> // 利用递归求斐波那契数列 1                 、1                         、2         、3        、5                         、8                 、13        、21                。                          。         。后面的值为前两项值得和 // 用户输入一个数字n就可以求出这个数字对应的斐波拉契数列的值 比如输入4 就会得到3 输入6就会得到8 // 分析 首先我们得到那个条件是用户输入的数字 有点抽象了 后面的概念 用户输入的数字就是我们要找的第n项 然后再结合斐波拉契数列的规律 我们要求第n项的值就可以由它的前两项的值相加所得 所以当用户输入第n项后 就可以通过n-1 和 n-2得到它的前两项的和 再由当前的前两项的和 通过递归的求法 function getNum(n) { if (n == 1 || n == 2) { return 1 } return getNum(n - 1) + getNum(n - 2) } console.log(getNum(7)); </script> </body> </html>

3.

然后是一个输入id来拿数据的案例                         ,这个案例其实还挺复杂的

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <!-- 输入id号 返回对应的数据对象 --> <script> // 完善 总不能通过console                。log来拿数据 所以是不方便的 这里可以新定义一个对象 来保存在里面 var good = {} var data = [{ id : 1, name : 家电, goods : [{ id : 11, gName : 电视机 }, { id : 12, gName : 电冰箱 }] },{ id : 2, name : 服装 }] function getID(Name, id) { Name.forEach(function(subject) { if (subject.id == id) { good = subject } else if(subject.goods && subject.goods.length != 0){ getID(subject.goods, id) } }) return good } console.log(getID(data, 1)); // 如何实现数组里的元素里的元素查找id console.log(getID(data, 11)); </script> </body> </html>

4.

最后是一个深拷贝的案例                 ,这个和前面一个是递归里面,我觉得比较能说明问题的两个案例                         ,逻辑能力挺强的                         ,不管是上一个还是这一个,慢慢的就开始变复杂了看得出

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <script> var obj = { id: 1, name: andy, msg: { age: 18 }, color: [pink, red] } var o = {} function getCopy(useCopy, usedCopy) { for (var k in usedCopy) { if (usedCopy[k] instanceof Array) { useCopy[k] = [] getCopy(useCopy[k], usedCopy[k]) } else if (usedCopy[k] instanceof Object) { useCopy[k] = {} getCopy(useCopy[k], usedCopy[k]) } else { useCopy[k] = usedCopy[k] } } return useCopy } getCopy(o, obj) console.log(o); o.msg.sex = console.log(o); console.log(obj); </script> </body> </html>
声明:本站所有文章                 ,如无特殊说明或标注                         ,均为本站原创发布                         。任何个人或组织         ,在未征得本站同意时                 ,禁止复制                         、盗用                 、采集、发布本站内容到任何网站                         、书籍等各类媒体平台         。如若本站内容侵犯了原著者的合法权益                         ,可联系我们进行处理        。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
linux安装软件包yum(Linux如何安装运行.AppImage文件?.AppImage文件两种运行方法介绍) 帝国cms7.5(帝国cms有什么用)