jjzjj

recursion

全部标签

java - 如何提高递归方法的性能?

我正在学习数据结构和算法,这是一个我一直困扰的问题。我必须通过将值存储到内存中来提高递归调用的性能。但问题是未改进的版本似乎比这更快。有人能帮帮我吗?Syracuse数是由以下规则定义的正整数序列:syra(1)≡1syra(n)≡n+syra(n/2),如果nmod2==0syra(n)≡n+syra((n*3)+1),否则importjava.util.HashMap;importjava.util.Map;publicclassSyraLengthsEfficient{intcounter=0;publicintsyraLength(longn){if(nmap=newHashM

java - 数学表达式二叉树

我应该实现一个包含数学表达式的二叉树,为每个二元或一元表达式使用不同的类。例如:Expressione=newSin(newPow(newMul(newPlus(newMul(newNum(2),newVar("x")),newVar("y")),newNum(4)),newVar("x")));树的叶子可以是变量或数字。每个变量都可以使用以下方法转换为另一个表达式:Expressionassign(Stringvar,Expressionexpression)我有2个用于一元和二元运算符的抽象类。在弄清楚如何将相同的表达式分配给表达式本身中的变量之一时,我一直遇到困难。例如:Expr

java - 在我的案例中,我可以在不循环遍历所有前面元素的情况下计算一个元素吗(参见问题正文)?

我有2个相同长度的double组。数组a填充一些数据,数组b要计算。数组b的每个元素等于数组a的对应值加上数组b中所有前面元素的加权和。加权和的计算方法是将所有这些元素分别乘以一个系数,该系数等于它与我们计算的当前元素的距离除以前一个子集中的元素数。为了实现这一点,我为我计算的每个元素循环遍历整个前面的子集。这可以优化吗?我没有足够的数学技能,但我怀疑我只能使用第一个前面的元素来计算每个下一个元素,因为每个元素都已经从前面的集合中派生出来并且包含它已经加权的所有信息。也许我可以只调整权重公式并在没有二级循环的情况下获得相同的结果?这似乎是Scala中的一个示例(我不确定它是否正确:-]

java - 在类 Test 中实例化类 Test 的成员是递归吗?

这是递归吗?publicclassTest{Testtest=newTest();publicstaticvoidmain(String[]args){newTest();}}关于instanceinitalizer的版本呢??publicclassTest{{Testtest=newTest();}publicstaticvoidmain(String[]args){newTest();}}我在问,因为我更新了myoldanswer,它展示了如何在没有递归的情况下生成StackOverflowError,但现在我不能100%确定上面的代码是否是递归的。 最

java - ruby 与 Java : Why world is going to end faster with Java?

我用HonoiTower的经典例子测试了递归方法的执行速度.首先在Java中比JRuby与Ruby不同没有。盘子数:packagecom.example;publicclassHanoi{publicstaticvoidmain(String[]args){int[]plates={25,26,27,28,29,30,31,32};for(inti=0;i结果是:Java(millis)JRuby(sec)Ruby(sec)Ruby(sec)Ruby(sec)java7jruby-1.7.9jruby-1.7.9ruby-2.1.3ruby-2.1.3{tailcall_optimiz

java - 使用递归绘制树

我正在尝试使用递归绘制一棵树。树需要看起来像这样:关于我应该如何做的简短总结:树干的长度为length,宽度为width树干分成两个Twig左边的是躯干长度的3/4,右边的是躯干长度的2/3左枝宽度为树干宽度的3/4,右枝宽度为树干宽度的1/2我们收到的参数是长度、最小长度、宽度、alpha(所有double)Twig生长直到Twig长于最小长度这是我解决问题的方法。我只想画树干,左分支和右分支。我设法做到了这一点,具有以下功能:publicvoiddrawTree(doublelength,doublemin_length,doublewidth,doublealpha){//Dra

java - 在链表末尾插入节点

对于这类问题,有一个简单的迭代解决方案。NodeInsert(Nodehead,intdata){NodenewNode=newNode();newNode.data=data;if(head==null){returnnewNode;}Nodecurrent=head;while(current.next!=null){current=current.next;}current.next=newNode;returnhead;}它工作得很好。但我想学习递归并以这种视角看待事物。因此我想出了下面的解决方案,它看起来很优雅,但我不得不承认这只是直觉并且给定的代码有效。我想开发一个处理递归

用于嵌套 ZIP 文件处理的 Java 实用程序库

我知道Oracle注意到ZIP/GZIP文件压缩器/解压缩器方法ontheirwebsite.但是我有一个场景,我需要扫描并找出是否涉及任何嵌套的ZIP/RAR。例如下面的情况:-MyFiles.zip-MyNestedFiles.zip-MyMoreNestedFiles.zip-MoreProbably.zip-Other_non_zips-Other_non_zips-Other_non_zips我知道apachecommons压缩包和java.util.zip是广泛使用的包,其中commons压缩实际上迎合了java.util.zip中缺少的功能,例如一些字符设置,同时做zip

java - 数独解法

我的数独解法有问题。该程序是这样工作的;开始时棋盘是空的,用户在棋盘上添加几个数字,然后点击“求解”按钮,程序会尝试求解。除了将相同的数字放在同一行之外,一切正常。因此,如果用户添加1,1,0,0...0。在拼图中,它无法解决它,因为它的两个1彼此相邻,并且将永远继续尝试找到一个sulotion,即使它无法解决谜。但是,如果它们都是0(空),它会立即解决它,就像我将1和2放在左上角一样。如果我只是在其中放入一些随机数,它将检测到它无法解决(或者如果它是一个有效的谜题,它将解决它)我在想这句话,当theNumber==(row,col)等于thenNumber==(row+1,col)时

java - Horner 的小数部分递归算法 - Java

我正在尝试创建一种递归方法,该方法使用Horner算法将以n为底的小数转换为以10为底的小数。我在这里和所有地方都进行了搜索,但找不到任何地方详细处理小数部分。提醒一下,我在递归方面很弱,因为我还没有在我的编程课上正式学习它,但已经被另一个类(class)分配了。我能够创建一个方法来处理数字的整数部分,而不是小数部分。我觉得我写的方法相当接近,因为它让我的测试数字的答案加倍(可能是因为我正在测试基数2)。传递的第一个参数是一个填充有系数的int数组。我不太关心系数的顺序,因为我正在使所有系数相同以对其进行测试。第二个参数是基础。第三个参数初始化为系数数减1,我也将其用于整数部分方法。我