草庐IT

递归图

全部标签

java - 解析时ANTLR4相互左递归错误

我有这个ANTLR4语法:constantFixedExpresion:term(('+'|'-')term)+;term:factor(('*'|'//'|'REM')factor)+;factor:('+'|'-')*(wholeNumberConstant|constantFixedExpresion|'TOFIXED'(stringConstant|bitCodeConstant)|identifier)('FIT'constantFixedExpresion)*;我收到以下错误:error(119):LanguageA.g4:::Thefollowingsetsofrules

Java Minimax Alpha-Beta 修剪递归返回

我正在尝试为Java跳棋游戏实现带有alpha-beta剪枝的minimax。我的minimax算法完美运行。我的代码使用适当的alpha-beta代码运行。不幸的是,当我与标准minimax算法进行1000场比赛时,alpha-beta算法总是落后50场左右。既然alpha-beta剪枝不应该降低移动的质量,而只是降低实现它们所需的时间,那么一定是出了什么问题。但是,我已经拿出笔和纸,画出假设的叶节点值,并使用我的算法来预测它是否会计算出正确的最佳着法,而且似乎没有任何逻辑错误。我使用了这个视频中的树:Alpha-BetaPruning追踪我的算法。从逻辑上讲,它应该做出所有相同的选

java - Java 是否支持和优化尾递归调用?

假设我有一个尾递归的递归函数。我想知道这个函数是否会被实现为递归,在堆栈上增长,或者它会被更改为循环(因为它是一个尾递归函数)?我刚刚读到Scala会检测此类调用并对其进行优化,但这是Scala专用的东西还是一般的JVM? 最佳答案 Java支持尾递归调用,但据我所知,它并没有优化它们。我认为是Scala编译器能够做到这一点,而不是JVM本身。查看Scala中的@tailrec注释,了解编译器的更多功能:)但无论Java/JVM是否优化尾递归,您的函数都将比必要的更难优化。看看这个:intsum(Listintegers){retu

java - 使用 FileUtils.listFiles 递归查找目录

我想收集目录下所有文件的列表,特别是包括子目录。我不喜欢自己做事,所以我使用来自ApacheCommonsIO的FileUtils.listFiles。所以我有类似的东西:importjava.io.File;importjava.util.Collection;importorg.apache.commons.io.FileUtils;importorg.apache.commons.io.filefilter.TrueFileFilter;publicclassTestListFiles{publicstaticvoidmain(String[]args){Collectionfo

java - Java 支持尾递归吗?

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:WhydoestheJVMstillnotsupporttail-calloptimization?我在网上看到很多不同的答案,所以我想我应该请教专家。

python - 有人可以解释为什么这会修复我的递归错误吗?

我在Python中递归地实现了二分搜索(我知道这很糟糕)并且使用以下代码得到了最大递归错误:defbs_h(items,key,lower,upper):iflower==upper:returnNonemid=(lower+upper)//2ifkey然后我像这样更改了我的参数和基本情况:defbs_h(items,key,lower,upper):iflower+1==upper:returnNonemid=(lower+upper)//2ifkey这修复了错误,但我不确定为什么。有人可以解释一下吗? 最佳答案 无论何时使用递归

python - 如何创建用于递归生成迭代函数的函数

我目前有一些Python代码如下所示:forset_kindata:fortup_jinset_k:fortup_lintup_j:问题是,我希望嵌套的for语句的数量根据用户输入而有所不同。如果我想创建一个生成n个for语句的函数,就像上面那些,我该怎么做呢? 最佳答案 defnfor(data,n=1):ifn==1:yieldfromiter(data)else:forelementindata:yieldfromnfor(element,n=n-1)演示:>>>foriinnfor(['ab','c'],n=1):...pr

python - 递归扫描文件并删除python中的空目录

我有以下结构:Dir1|___Dir2|___file1|___file2...Dir3|___Dir4|___file3...我希望能够递归地找到每个文件,以我自己的方式处理文件,一旦完成,删除文件,移动到下一个。然后,如果该目录是空的,也将其删除,直到什么都没有为止。只是不确定如何进行。这是我的:forroot,dirs,filesinos.walk(dir):path=root.split('/')forfileinfiles:file=os.path.join(root,file)process_file(file)os.remove(file)这很好,但我想删除子目录,前提是

python - 谷歌应用引擎中的递归删除

我正在将googleappengine与django1.0.2(和django-helper)一起使用,想知道人们是如何进行递归删除的。假设您有一个类似这样的模型:classTop(BaseModel):passclassBottom(BaseModel):daddy=db.ReferenceProperty(Top)现在,当我删除“顶部”类型的对象时,我希望所有关联的“底部”对象也被删除。就像现在一样,当我删除“顶部”对象时,“底部”对象会保留下来,然后我得到不属于任何地方的数据。在View中访问数据存储时,我最终得到:Caughtanexceptionwhilerendering:

python - 递归寻找表达深度

我正在尝试使用递归来查找“表达式”的深度,即嵌套元组的层数:例如,depth(('+',('expt','x',2),('expt','y',2)))=>2depth(('/',('expt','x',5),('expt',('-',('expt','x',2),1),('/',5,2))))=>4基本上,我认为我需要检查(从外到内)每个元素是否是元组的实例,然后如果是,则递归调用深度函数。但我需要找到一种方法来确定哪一组递归调用具有最大深度,这就是我遇到的问题。这是我到目前为止所拥有的:defdepth3(expr):ifnotisinstance(expr,tuple):retur