jjzjj

tail-recursion

全部标签

javascript - 反转字符串 : Recursion vs iteration in javascript

一个月前,我接受了一些googlePTO成员的采访。其中一个问题是:js递归反转字符串并用大O符号解释运行时间这是我的解决方案:functioninvert(s){return(s.length>1)?s.charAt(s.length-1)+invert(s.substring(0,s.length-1)):s;}我觉得很简单。而且,关于大O表示法,我很快回答了O(n),因为运行时间与输入线性相关。-沉默-然后,他问我,如果你通过迭代实现它,在运行时间方面有什么不同?我回答说,有时编译器将递归“翻译”为迭代(一些编程语言类(class)内存),因此在这种情况下迭代和递归没有区别。顺便

javascript - 使用 Google map + 地点库时出现 "too much recursion"错误

我有一个使用Googleplaces库(demo,顺便说一句,在JSFiddle中,如果我将gmaps.js添加为脚本引用,它将不起作用,但如果我将其添加为HTML部分中的脚本元素(完全相同的脚本可以正常工作)看起来像这样:InformationLocationlat.lng.Map使用以下JavaScript:varinput=document.getElementById('target'),searchBox=newgoogle.maps.places.SearchBox(input),map=newGMaps({div:'#ScavengerMap',lat:37.771424

javascript - `es2016` 预设的 Babel 是否实现了尾调用优化?

我使用以下示例来测试Babel和es2016预设的尾调用递归:'usestrict';try{functionr(n){if(n%5000===0)console.log(`reachedadepthof${n}`);r(n+1);}r(0);}catch(e){if(!(einstanceofRangeError))throwe;elseconsole.log('stackblown');}我的package.json文件是:{"name":"tail-call-optimization","version":"1.0.0","description":"","main":"inde

javascript - javascript中具有异步回调模式的无限循环

假设我想向服务器发送一个异步AJAX请求,当它响应时发送另一个请求并永远重复:functionsendXHR(url,callback){//SendXMLHttpRequesttoserverandcallcallbackwhenresponseisreceived}functioninfinite(){sendXHR('url/path',infinite);}infinite();我假设这里我们会很快用完堆栈空间,那么我该怎么做(不阻塞)?传递回调而不是使用return的模式在node.js中特别流行。人们如何创建无限循环?我不相信大多数JS引擎会进行任何类型的尾调用优化。

Javascript i++ 递归过多,尾递归 i+1 ok

感谢您的宝贵时间。我正在学习斐波那契函数,其中一个答案如下:functionfibonacci(n){return(function(a,b,i){return(i由于arguments.callee在ES5之后在严格模式下是被禁止的,所以我用一个函数名来代替它。之后,我看到了i+1部分,我将其替换为i++,结果递归过多。functionx(n){return(functiony(a,b,i){return(i经过几次调试,我发现i+1可以正常工作,而i++则不行。那么,是我用错了地方还是我根本没理解i++?再次感谢。 最佳答案 i

javascript - ES6 尾调用优化是否涵盖生成器?

ES6对尾调用优化的支持是否涵盖生成器中的尾调用?假设我有这个>=0的整数生成器:varnums=function*(n){n=n||0;yieldn;yield*nums(n+1);};目前,在Chrome和Firefox中,它会为每个递归调用添加一个堆栈级别,最终会遇到“超出最大调用堆栈大小”错误。一旦ES6完全实现,这种情况还会发生吗?(我知道我可以迭代地编写上面的生成器而不会遇到错误。我只是好奇TCO是否会处理递归定义的生成器。) 最佳答案 当进行函数调用时,根据Functioncallevaluation部分,Lettai

javascript - jQuery UI 1.7.3 datepicker 与 date.js 冲突导致 "too much recursion"?

我正在尝试在jQueryUI对话框中使用jQueryUI1.7.3日期选择器小部件。对话框的内容来自一个页面模板,其中包括使页面功能所需的所有各种javascript导入。我还导入的其中一个东西是著名的date.js文件。我在对话框中加载的这个页面本身也作为独立页面存在。日期选择器在那里就像一个魅力。当我在对话框中加载它时,一切都中断了。当焦点位于日期输入字段时,日期选择器应该出现。但是,我收到了这样一个令人作呕的错误:toomuchrecursion[Breakonthiserror]returnw;};Date.prototype.isDST=function...ase"z":r

javascript - 没有循环的尾递归树遍历

我想以递归方式遍历以下树结构尾而不回退到循环:consto={x:0,c:[{x:1,c:[{x:2,c:[{x:3},{x:4,c:[{x:5}]},{x:6}]},{x:7},{x:8}]},{x:9}]};0/\19/|\278/|\346|5期望的结果:/0/1/2/3/4/5/6/7/8/9我想需要一个闭包来启用尾递归。到目前为止我已经试过了:consttraverse=o=>{constnextDepth=(o,index,acc)=>{constnextBreadth=()=>o["c"]&&o["c"][index+1]?nextDepth(o["c"][index+1

javascript - 使用 javascript 滚动日志文件 (tail -f) 动画

我想在网站上创建一个动画来模仿滚动的日志文件或tail-f。我会向它提供一个虚假日志消息列表,它们将被写入div的底部,并在显示新消息时向上滚动并离开顶部,然后循环。它需要看起来真实,黑底白字,使用固定宽度的字体等。有谁知道任何可以帮助我解决这个问题的javascript或jQuery库?我是JavaScript的初学者,因此非常感谢任何有关如何处理此问题的建议。 最佳答案 我已经为你做了一个简单的例子http://jsfiddle.net/manuel/zejCD/1///somedemodatafor(vari=0;i").te

JavaScript 对象文字方法 : Recursive call

是否可以从对象字面量中递归调用方法?例如:(function(){'usestrict';varabc=['A','B','C'],obj={f:function(){if(abc.length){abc.shift();f();//Recursivecall}}};obj.f();}());错误:'f'在定义之前被使用。谢谢。 最佳答案 您可以通过使用命名函数表达式:f:functionmyself(){if(abc.length){abc.shift();myself();//Recursivecall}}必读:http://k