草庐IT

非递归

全部标签

java - 如何使用递归实现dfs?

我正在尝试使用以下代码通过递归实现DFS,publicstaticvoiddfs(inti,int[][]mat,boolean[]visited){visited[i]=true;//Marknodeas"visited"System.out.print(i+"\t");for(intj=0;j我有一个矩阵和一个数组用于跟踪访问过的节点,//adjacencymatrixforuni-directionalgraphint[][]arr={//12345678910{0,1,1,1,0,0,0,0,0,0},//1{0,0,0,0,0,0,1,0,0,0},//2{0,0,0,0,0

java - 在国际象棋编程中很好地使用递归?

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。作为家庭作业的一部分,我必须用Java编写一个简单的国际象棋游戏。我想借此机会尝试递归,我想知道国际象棋中是否有明显的递归代码候选人?

java - 为什么Eclipse中的显示不支持Java中的递归函数?

我在EclipseIDE中用Java实现了阶乘函数。publicclassUtilities{publicstaticintfactorial(intn){intresult;if(n在Eclipse的显示中,我检查了Utilities.factorial(6)。但是,我收到此错误。Utilities.factorial(6);Evaluationfailed.Reason(s):Cannotperformnestedevaluations.为什么显示不支持递归调用?是这个问题吗? 最佳答案 要返回答案,它必须计算表达式,为此它必须

java - 算术递归

我正在尝试编写一段代码,为给定的整数n计算以下内容:1/1+1/2+1/3...+1/n这是我到目前为止编写的代码:publicclassRecursiveSum{publicstaticdoubleSumto(intn){if(n==0){return0.0;}elseif(n>0){return1/n+1/Sumto(n-1);}else{thrownewIllegalArgumentException("Pleaseprovidepositiveintegers");}}publicstaticvoidmain(String[]args){System.out.println(S

java - 返回一些负数的递归阶乘方法

这是我的阶乘方法:publicstaticlongfactorial(intnum1){if(num1这就是所谓的递归阶乘方法:for(i=0;i到目前为止一切顺利,起初输出似乎是正确的,但一些阶乘是负数而不是正数:OUTPUT:0!=11!=12!=23!=64!=245!=1206!=7207!=5,0408!=40,3209!=362,88010!=3,628,80011!=39,916,80012!=479,001,60013!=6,227,020,80014!=87,178,291,20015!=1,307,674,368,00016!=20,922,789,888,0001

java - 递归类型边界的使用

我的一个friend在JavaAPI(https://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html)中发现了这个花絮,ClassEnum>并通过阅读以下文章https://docs.oracle.com/javase/tutorial/java/generics/genTypes.html我可以理解上述行在语法上的含义,但从给出的示例中我无法找出Enum类之外的用例(查看源代码)。我想详细了解上述可能提供解决方案的可能问题。 最佳答案 例如,允许子类使用它们自己的类型很有

java - 斐波那契数列 - 递归求和

好的,我最初写了一个简单的代码来根据用户输入从系列中返回斐波那契数..n=5会产生3..staticintfibonacci(intn){if(n==1)return0;elseif(n==2)return1;elsereturn(fibonacci(n-1)+fibonacci(n-2));}我正在考虑修改代码以返回系列的总和,而不是仅仅返回系列的值,并且在尝试求和时我不小心将1添加到return语句,令我惊讶的是,它返回了总和正确。下面的代码将在n=5时返回7。我不确定这是否是计算总和的正确方法...如果我加1,我仍然无法弄清楚级数的总和是如何工作的。有人可以解释一下吗??stat

java - 递归取消 allOf CompletableFuture

如果我有CompletableFuturefuture1=service.request(param1);CompletableFuturefuture2=service.request(param2);CompletableFuturemany=CompletableFuture.allOf(future1,future2);当我执行many.cancel()时会发生什么?future1和future2也会取消吗?如果没有,实现这一目标的最干净的方法是什么?我不愿意坚持future1和future2,只是为了能够在我想取消many时取消它们。关于我为什么想要这个的一些背景:当接收到一

java - 如何递归复制整个目录,包括Java中的父文件夹

我目前正在将文件夹从一个地方复制到另一个地方。它工作正常,但它没有复制所有其他文件和文件夹所在的原始文件夹。这是我正在使用的代码:publicstaticvoidcopyFolder(Filesrc,Filedest)throwsIOException{if(src.isDirectory()){//ifdirectorynotexists,createitif(!dest.exists()){dest.mkdir();}//listallthedirectorycontentsStringfiles[]=src.list();for(Stringfile:files){//const

c# - Java中递归和非递归函数的效率比较

据我了解,由于函数调用的开销,递归函数的效率通常低于等效的非递归函数。但是,我最近遇到一本教科书,说这对于Java(和C#)不是必需的。它没有说明原因,但我认为这可能是因为Java编译器以某种方式优化了递归函数。有人知道为什么会这样吗? 最佳答案 教科书可能指的是尾调用优化;有关详细信息,请参阅@Travis的回答。但是,教科书在Java上下文中是不正确的。当前的Java编译器没有实现尾调用优化,显然是因为它会干扰Java安全实现,并且会改变出于各种目的对调用堆栈进行内省(introspection)的应用程序的行为。引用资料:Do