草庐IT

递归算法

全部标签

javascript - 递归搜索全局变量及其属性中的值

假设我想在window中所有声明的变量中搜索一个值,例如'StackOverflow'。我可以用这段代码做到这一点:functionglobalSearch(obj,value){for(varpinobj)if(obj[p]==value)return(p);}globalSearch(window,'StackOverflow');此代码将返回具有此值的变量的名称(或不返回任何内容)。因此,如果我声明了一个值为'StackOverflow'的变量,它将成功找到它。我的问题是我想更深入地搜索window的对象(及其自己的嵌套对象),以获得如下结果:varx='StackOverflo

javascript - javascript中的递归字符串反转函数?

我是一名经验丰富的前端工程师,CS背景较弱。我试图了解递归的概念。我能找到的大多数示例和声称的解释都没有以我认为易于理解的方式对其进行解释。我给自己设定了一个任务,即编写一个函数来递归地反转字符串。我知道必须有一个基本条件(即找到解决方案),但我无法弄清楚如何实际编写这样的东西并且可以使用演示来研究。有人可以提供示例功能吗? 最佳答案 类似于:functionreverse(str){if(str===""){return"";}else{returnreverse(str.substr(1))+str.charAt(0);}}所以

数据结构与算法——知识点总结

本文包含数据结构与算法主要的基本知识点,便于知识的梳理与回顾。部分知识点的详细介绍请在专栏内查阅。目录一、概述二、线性表三、栈四、队列五、串六、多维数组和广义表七、树和二叉树八、图九、查找十、排序一、概述数据结构(逻辑结构、存储结构、算法)数据项∈数据元素(记录)∈数据。数据元素(结点):数据的基本单位。数据项:不可分割,最小数据单位。数据对象:性质相同的数据元素的集合,数据的子集。1、逻辑结构(线性和非线性)数据结构(相互之间存在一种或多种特定关系的数据元素的集合)集合:同属于一个集合是数据元素之间的唯一关系。线性结构:“一对一”关系,仅有一个直接前驱和一个直接后继。树形结构:”一对多”关系

javascript - 递归函数 vs setInterval vs setTimeout javascript

我正在使用NodeJs并且需要调用无限函数,但我不知道什么是最佳性能。递归函数functiontest(){//mycodetest();}设置间隔setInterval(function(){//mycode},60);设置超时functiontest(){//mycodesetTimeout(test,60);}我想要在不崩溃服务器的情况下获得最佳性能。我的代码有几个算术运算。感谢任何优化javascript性能的建议。 最佳答案 小心..你的第一个代码会阻塞JavaScript事件循环。基本上在JS中是类似于应该处理的函数列表

javascript - 5 个主要浏览器都使用哪些垃圾收集算法?

我目前正在重新考虑qooxdooJavaScript框架的对象处置处理。请看下图(A当前在范围内):diagramhttp://yuml.me/51747906.jpg假设我们要删除B。通常,我们会切断所有对象之间的所有引用。这意味着我们在示例中切断了连接1到5。这真的有必要吗?据我阅读here,浏览器使用标记和清除算法。在这种情况下,我们只需要切断引用1(与范围的连接)和5(与DOM的连接),这样会更快。但我能确定所有浏览器都使用标记清除算法或类似算法吗? 最佳答案 对于任何体面的垃圾收集器(不仅仅是标记和清除),切断连接1就足以

javascript - 为什么我使用位图缓冲区在索引和 x,y 之间转换的算法会导致图像垂直翻转?

当使用像这样的位图缓冲区时:[50,50,50,255,50,50,50,255,...][r,g,b,a,r,g,b,a,...]我经常这样使用数学:letbufferWidth=width*4;buffer.forEach((channel,index)=>{lety=Math.floor(index/bufferWidth);letx=Math.floor((index%bufferWidth)/4);letremainder=index%4;为了计算x、y,反之亦然以使用位图数据的FlatBuffers。我几乎总是以翻转的结果结束,并且以某种方式最终将它们翻转回来,但显然我对此

计算机视觉算法——基于Transformer的目标检测(DETR / Deformable DETR / DETR 3D)

计算机视觉算法——基于Transformer的目标检测(DETR/DeformableDETR/DETR3D)计算机视觉算法——基于Transformer的目标检测(DETR/DeformableDETR/DETR3D)1.DETR1.1TransformerEncoder-Decoder1.2Set-to-SetLoss1.3PositionalEmbedding2.DeformableDETR2.1DeformableAttentionModule2.2DeformableTransformerEncoder-Decoder2.3Conclusion3.DETR3D3.12Dto3DTra

javascript - Mustache JS,如何创建一个子列表数量未知的递归列表?

我已经在几个线程中看到过这个讨论,看起来这是(或现在)执行此操作的方法。但我似乎无法让它发挥作用。所以我一定遗漏了什么。输出应该看起来像parentsubchildsubsubchild我得到的是parentsubchild到目前为止我有什么模板{{#menu}}{{item}}{{#menu}}{{item}}{{/menu}}{{/menu}}jsvardata={menu:[{"item":"parent","menu":[{"item":"subchild","menu":[{"item":"subsubchild"}]}]}]};vartemplate=$("#templat

JavaScript 递归 : Maximum call stack size exceeded

我有一个递归函数,可以在Canvas上移动一些圆圈。覆盖的圆圈被放大(放大),所有其他圆圈被推开。插入的圆圈插入其他圆圈等等,直到缩放完成。我收到错误消息“超出最大调用堆栈大小”,我理解这个问题,但我就是不知道如何解决...我找到了解决一般递归问题的三种可能的解决方案:将递归改为迭代使用memoization使用SetTimeout但我认为我不能使用它们中的任何一个:我无法实现迭代,因为所需的操作数未知我不太了解内存,但我认为它也不适合(或者我错了,有人可以告诉我不同​​的说法?)我不能使用SetTimeout,因为它应该在这个特定的动画中阻止函数调用。我该如何解决这个问题?//Pus

javascript - Kadane 的算法解释

有人可以告诉我Kadane算法中发生了什么吗?想检查我的理解。这就是我的看法。你正在遍历数组,每次将ans变量设置为看到的最大值,直到该值变为负数,然后ans变为零。与此同时,每次循环都会覆盖sum变量,直到之前看到的总和之间的最大值或迄今为止最大的“ans”。循环执行完毕后,您将获得迄今为止看到的最大总和或答案!varsumArray=function(array){varans=0;varsum=0;//loopthroughthearray.for(vari=0;i 最佳答案 考虑跟踪值:varmaximumSubArray=