草庐IT

RECURSION

全部标签

java - 查找加起来等于给定字符串的所有子字符串组合

我正在尝试创建一个数据结构来保存所有可能的子字符串组合,这些组合加起来就是原始字符串。例如,如果字符串是"java",则有效结果将是"j"、"ava"、"ja"、"v"、"a",无效结果将是"ja"、"a"或"a"、"jav"我很容易找到所有可能的子串Stringstring="java";Listsubstrings=newArrayList();for(intc=0;c现在我正在尝试构建一个只包含有效子字符串的结构。但这并不容易。我在一个非常丑陋的代码的迷雾中,摆弄着索引,并且没有完成的地方,很可能完全走错了路。有什么提示吗? 最佳答案

java - 递归运行时实现 Java 与其他/功能语言?

我喜欢递归,但在Java中,您有时会遇到死胡同。例如。我有一个案例,其中~100K迭代的递归不起作用(StackOverflowError)。糟糕的是,由于这个运行时堆栈限制的原因,我不得不切换到烦人的“命令式循环”。我想知道其他(尤其是函数式)语言如何在运行时绕过堆栈溢出?我想特别是函数式语言运行时可以更好地处理这个问题,因为递归是核心概念......有人有一些信息或外部资源吗? 最佳答案 大多数语言都针对tailrecursion进行了编译器优化.尾递归意味着递归调用应该是递归方法的最后一次调用。然后编译器可以将其优化为一个循环

java - 递归打印对象详细信息

如何递归打印对象的内容? 最佳答案 您可以通过覆盖toString来递归打印它在你所有的类(class)中。如果你想要一个类似printObjectRecursively(Objecto)的方法您需要深入研究反射,获取字段,使用printObjectRecursively(someField)递归地打印它们的名称和内容.例子:publicclassTest{publicstaticvoidmain(String[]args){Aa=newA();System.out.println(a);}}classA{inti=5;Bobj=n

java - 在 JSP 页面上显示树

我需要在JSP页面上显示树。我怎样才能做到这一点?我有以下对象:publicclassNode{privateLongid;privateLongparentId;privateStringname;privateListchildren;//Getters&setters} 最佳答案 用jsp递归滚动你自己的在Controller.javaNoderoot=getTreeRootNode();request.setAttribute("node",root);在main.jsp页面在node.jsp基于http://web.arc

java - 递归与堆栈实现。为什么递归返回 StackOverflow 而 Stack 不返回?

本题依据:我将在今年夏天毕业并获得CS学位,而且教授从未强调过Stack的重要性。然而,我有多个项目都专注于递归的使用。我发现递归很有用且令人兴奋,并且在我的个人项目中经常使用它。我最近去参加了一次工作面试,面试官对他们问题的递归解决方案感到非常失望。他们想要Stack解决方案。我做了很多研究,但我仍然不确定何时使用哪个。给出以下演示:publicclassTestCode{staticlongstartTime=0;staticlongstopTime=0;staticlongtotalTime=0;publicstaticvoidmain(String[]args)throwsIO

java - 获取字段的值,给定层次路径

我有一个包含子属性的对象,它也有子属性等等。我基本上需要找到检索对象上特定字段值的最佳方法,因为它是作为字符串的完整层次路径。例如,如果对象具有字段company(Object),字段client(Object)具有字段id(String),则此路径将表示为company.client.id。因此,给定我试图获取对象值的字段的路径,我将如何执行此操作?干杯。 最佳答案 您可以使用ApacheCommonsBeanUtilsPropertyUtilsBean。使用示例:PropertyUtilsBeanpub=newPropertyU

java - 递归替换所有java

这个问题在这里已经有了答案:Regextoreplacerepeatedcharacters(2个答案)关闭6年前。我试图用Java替换字符串中所有重复的字符,并且只替换一个字符。例如:aaaaa--->a为此,我尝试使用replaceAll方法:"aaaaa".replaceAll("a*","a")//returns"aa"我开发了一种递归方法,它可能不是很有效:publicStringrecursiveReplaceAll(Stringoriginal,Stringregex,Stringreplacement){if(original.equals(original.repla

Java && ||在 RETURN 语句中?

我正在查看一些Java算法示例,我在递归方法中遇到了这段代码:booleansubTree(TreeNodet1,TreeNodet2){if(t1==null){returnfalse;}if(t1.value==t2.value){if(treeMatch(t1,t2))returntrue;;}return(subTree(t1.left,t2)||subTree(t1.right,t2));}不知道(也从未见过)||之前在return语句中使用过,更不用说递归语句了,真的让我很困惑。我将代码复制到Eclipse中以查看它是否有效。然后我更换了||与&&和Eclipse似乎并没有

java - 理解双重递归

如果一个函数中只有一个递归调用,我就能很容易地理解递归。但是,当我在同一个函数中看到两个或多个递归调用时,我真的很困惑。示例:intMaximumElement(intarray[],intindex,intn){intmaxval1,maxval2;if(n==1)returnarray[index];maxval1=MaximumElement(array,index,n/2);maxval2=MaximumElement(array,index+(n/2),n-(n/2));if(maxval1>maxval2)returnmaxval1;elsereturnmaxval2;}我

java - 递归与内存

我有一个程序通过递归传递大量数据,比如1000个变量。递归将运行至少50或60次。我担心的是,是否有可能因为没有太多空间而在内存位置上覆盖数据,或者如果没有内存,我会得到一些异常,即程序内存已经用完了(我没有收到这样的错误)?是否有可能因为程序没有更多内存并且覆盖现有位置而得到错误的解决方案? 最佳答案 涉及两个存储区:stack和堆。堆栈是保存方法调用的当前状态(即局部变量和引用)的地方,堆是存储对象的地方。TheHotspotdocumentation说在Linux64位上,每个线程默认都有1024kB的堆栈。堆可以任意大,如今