Tag: recursion

在递归中使用+ =的Java和C ++中的不同结果

如下非常简单的Java代码具有奇怪的输出,但C和C ++中的相同逻辑代码具有正确的输出。 我尝试使用JDK 1.7和JDK 1.3(相对JRE),奇怪的输出始终存在。 public class Test { public static int sum=0; public static int fun(int n) { if (n == 1) return 1; else sum += fun(n – 1); // this statement leads to weird output // { // the following block has right output // int tmp = fun(n – 1); // […]

在Java 8中实现无堆栈递归

如何在Java中实现无堆栈递归? 似乎最常出现的词是“蹦床”,我不知道这意味着什么。 有人在IN DETAIL中解释如何在Java中实现无堆栈递归吗? 还有什么是“蹦床”? 如果你不能提供其中任何一个,你能指出我正确的方向(即一本书来阅读它或一些教导所有这些概念的教程)?

在java中解析递归未知的json输入结构

我试图在java中解析递归未知的json输入结构,如下面的格式,并尝试在另一个json中重写相同的结构。 同时我需要在解析时validation每个json键/值。 {“Verbs”:[{ “aaaa”:”30d”, “type”:”ed”, “rel”:1.0, “id”:”80″, “spoken”:”en”, “ct”:”on”, “sps”:null },{ “aaaa”:”31″, “type”:”cc”, “rel”:3.0, “id”:”10″, “spoken”:”en”, “ct”:”off”, “sps”:null },{ “aaaa”:”81″, “type”:”nn”, “rel”:3.0, “id”:”60″, “spoken”:”en”, “ct”:”on”, “sps”:null }]} 请建议我可以使用哪个json解析器来读取和编写未知的json内容。

finally块中的堆栈溢出error handling

我有一个java程序,运行无限次。 程序代码: void asd() { try { //inside try block System.out.println(“Inside try !!!”); asd(); } finally { //inside finally System.out.println(“Inside finally !!!”); asd(); } } OUTPUT:通过不断打印两个sysout,这个程序无限运行。 我的问题:在某些时候,它开始从try块中抛出StackOverflowErrors,因此它到达finally块,我们再次以递归方式调用此函数。 但是,当我们已经面临StackOverflowError时,finally块中的递归函数如何执行? JVM如何处理这种情况? 如果我们也得到OutOfMemoryErrors会发生同样的行为吗?

防止toString()中无限递归的最有效方法?

如果收集项的图形中的某个地方是对自身的引用,则对集合上的字符串可以进入无限循环。 见下面的例子。 是的,良好的编码实践应该首先防止这种情况,但无论如何,我的问题是:在这种情况下检测递归的最有效方法是什么? 一种方法是在threadlocal中使用一个集合,但这看起来有点沉重。 public class AntiRecusionList extends ArrayList { @Override public String toString() { if ( /* ???? test if “this” has been seen before */ ) { return “{skipping recursion}”; } else { return super.toString(); } } } public class AntiRecusionListTest { @Test public void testToString() throws Exception { AntiRecusionList list1 = new […]

Java:给出数字N的true和false组合的生成器;

我尽可能地简化任务,所以我可以将它应用到我的算法中。 这是数学家和程序员面临的挑战: 我需要创建一个传递参数int n的方法: public void optionality_generator(int n){ //some kind of loops, or recursions…to make it workable System.out.println(“current combination: …”); } 输出应显示true和false的所有可能组合。 这是N = 1的例子; N = 2; N = 3; N = 4; N = 5,其中x =假,0 =真; 请注意,空的断裂线只是为了让您更容易识别图案。 希望,我包括所有可能的组合): Combination of 1: 0 x Combination of 2: 00 x0 0x xx Combination of […]

Java中的数独求解器,使用回溯和递归

我正在用Java编写一个用于9×9网格的数独求解器。 我有方法: 打印网格 用给定的值初始化电路板 测试冲突(如果相同的数字在同一行或3×3子网格中) 一种逐个放置数字的方法,这需要最多的工作。 在我详细介绍该方法之前,请记住我必须使用递归来解决它,以及回溯(在这里观看applet作为示例http://www.heimetli.ch/ffh/simplifiedsudoku.html ) 另外,我通过垂直向下移动来解决这个数独,从左上角开始,到第一列,然后到第二列,等等。 到目前为止,我有以下内容: public boolean placeNumber(int column){ if (column == SUDOKU_SIZE){ // we have went through all the columns, game is over return true; } else { int row=0; //takes you to the top of the row each time while (row < SUDOKU_SIZE) loops through the column downwards, […]

Recursion vs For循环 – Factorials,Java

获得阶乘(循环与递归)的这两种方法中的哪一种更有效/更快? 如果那个可以改进,怎么样? 语言:Java private static long factrecur(int n) { if (n == 0) { return 1; } else { return n * factrecur(n-1); } } private static long factloop(int a) { long total = 1; for (int b=a;b>=1;b–) { total *= b; } return total; }

如何计算二叉搜索树的深度

我想计算二进制搜索树的每个节点的深度的总和。 元素的各个深度尚未存储。

HQL递归,我该怎么做?

我有一个树结构,其中每个Node都有一个父Node和一个Set children 。 每个Node都有一个String title ,我想进行一个查询,我选择Set titles ,作为该节点和所有父节点的标题。 我该如何编写此查询? 对单个标题的查询是这样的,但就像我说的那样,我希望它扩展到父母的整个分支。 SELECT node.title FROM Node node WHERE node.id = :id 干杯 聂