草庐IT

递归方程

全部标签

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

java - 递归搜索Java中的目录

在Java中查找具有特定名称的目录的最佳方法是什么?我要查找的目录可以位于当前目录或其子目录之一中。 最佳答案 在Java8中通过streamsAPI:Optionalhit=Files.walk(myPath).filter(file->file.getFileName().equals(myName)).findAny();#walk是懒惰的,所以任何short-circuitingterminaloperation将优化所需的IO。 关于java-递归搜索Java中的目录,我们在S

java - 递归 isPalindrome 函数如何工作?

我正在研究一些介绍性的递归问题,我有一个需要澄清的问题希望得到解答。我最烦心的问题是这个递归如何在下面解决的问题中运行?尽管解决了问题,但我只是不明白递归调用是如何进入字符串内部的。从代码来看,似乎这种方法只会检查给定字符串两端的两个字符,而不会检查其余部分。我的教科书给出了一个非常令人不满意的答案,基本上,只要您的return语句改进了问题,就不必担心递归的工作原理。但是,如果不了解如何以跟踪循环的方式跟踪递归方法,我就很难知道如何处理后续递归问题。任何智慧的话将不胜感激。谢谢!publicclassisPalindrome{publicstaticbooleanisPalindro

java - 通过递归查找数组中最大的正整数

我决定递归地实现一个非常简单的程序,看看Java如何处理递归*,结果有点短。这就是我最后写的:publicclasslargestInIntArray{publicstaticvoidmain(String[]args){//Thesethreelinesjustsetupanarrayofints:int[]ints=newint[100];java.util.Randomr=newjava.util.Random();for(inti=0;ilargest)largest=i;returnlargest;}privatestaticintrecursive(int[]ints,in

java - 数学方程式在 Java 中是如何工作的?

当我做这样的事情时inttest=5+3*(4-1)/2;我得到9。我怀疑这是因为int向下舍入。但是,当我这样做时floattest=5+3*(4-1)/2;我也得到9。但是,当我这样做时floattest1=5;floattest2=4.5;floattest=test1+test2;测试最终输出9.5。有人可以解释这背后的逻辑吗?为什么我在第二个例子中得不到9.5?谢谢。 最佳答案 在您的第二个示例中,尽管您将结果赋值给float类型的变量,但计算本身的执行方式仍与第一个示例完全相同。Java不查看目标变量类型来确定如何计算右

java - 递归二叉搜索树插入

所以这是我的第一个java程序,但我已经做了几年的c++。我写了我认为应该起作用的东西,但实际上并没有。所以我规定必须为此调用编写一个方法:tree.insertNode(value);其中值是一个整数。出于显而易见的原因,我想递归地编写它,所以我不得不做一个变通:publicvoidinsertNode(intkey){Nodetemp=newNode(key);if(root==null)root=temp;elseinsertNode(temp);}publicvoidinsertNode(Nodetemp){if(root==null)root=temp;elseif(temp