Tag: recursion

递归构造函数调用错误无法找到解决方案

我在四个公共金枪鱼部分得到了递归构造溢出调用错误(部分=可能是一个类或其他东西?)。 它在教程上工作但不适合我,似乎无法看到哪里 public class tuna { private int hour; private int minute; private int second; public tuna() { this(0,0,0); //default } public tuna(int h){ this(h,0,0); //with hours input } public tuna(int h, int m){ this(h,m,0); //with hours and minutes } public tuna(int h, int m, int s){ this(h,m,s); //with hours, minutes and seconds }

为什么在这个二进制树的方法insert方法中,root始终为null

我试图为BST类实现一个递归插入节点方法 public void insertNode(Node r, Node n) { if(r == null) { System.out.println(“r=n”+ n.data); r = n; } else { System.out.println(“r=! null finding place in tree for “+ n.data); if(n.data <= r.data) { if(r.left == null) r.left = n; else insertNode(r.left, n); } else { if(r.right == null) r.right = n; else insertNode(r.right, n); } […]

NullPointerException使用链接列表时出错

我刚刚完成了这个程序的工作,并将其编译,但在用户输入后它会中断并给我这个: 请在键盘12 4 3 2 1输入0或更多值 Exception in thread “main” java.lang.NullPointerException at Search.buildList(Search.java:41) at Search.main(Search.java:10) 这是代码: import java.io.*; import java.util.*; public class Search { public static void main(String argv[]) throws IOException { Scanner stdin = new Scanner(System.in); System.out.println(“Please input 0 or more values at keyboard”); Node head = buildList(); System.out.println(“Now printing list”); printList(head); System.out.println(“\nWhat key […]

GUI中的递归错误

我正在为Minesweeper创建一个简单的9×9网格。 这个游戏的主要function之一是,当点击的图块没有围绕它的炸弹时,有一个递归来检查所有边。 在下面的代码中,我已经能够创建一个检查tile的上侧和左侧的函数。 如果我添加更多方向,例如下方和右方,程序将崩溃并且无法正确显示切片。 (检查//MY MAIN PROBLEM行下的方法countBorders ) //显示主GUI包Minesweeper4; public class mainFrame { public static void main(String[] args) { new Grid().setVisible(true); } } //主要代码 package Minesweeper4; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.Random; import javax.swing.*; public class Grid extends JFrame implements ActionListener { private JPanel mainGrid; private JButton button1, button2; private JButton[][] […]

如何使用我的Fibonacci方法实现Tail递归?

我正在尝试计算大量的Fibonacci序列,因此我使用大整数。 我的方式可以达到10000左右,但是我的堆栈空间不足。 我意识到我可以增加堆栈和堆空间,但我的理解是尾递归可以解决空间问题。 这是我的代码.. public class FibRecursion{ static BigInteger[] fval; public static void main(String[] args) { int index; Scanner input = new Scanner(System.in); index = input.nextInt(); fval = new BigInteger[index + 1]; System.out.println(fib_rec(index)); } public static BigInteger fib_rec(int index){ BigInteger result = BigInteger.ONE; if(index <= 2){ return result; } else{ if(fval[index] != null){ result=fval[index]; } […]

回溯powershellJava密码破解者

我有这个家庭作业,以一个递归的方法来破解给定长度的密码,n(无限和未知!)由小英文字母组成,只有az。 这是创建随机密码的“密码”类: import java.util.Random; public class Password { private String _password = “”; public Password(int length) { Random generator = new Random(); for (int i = 0; i < length; ++i) { this._password = this._password + (char) (generator.nextInt(26) + 97); } } public boolean isPassword(String st) { return st.equals(this._password); } public String getPassword() { return […]

这个inorder遍历算法如何工作?

我没有太多的递归经验,所以我很难确定这个算法是如何工作的: public static void inorder(Node n) { if (n != null) { inorder(n.getLeft()); System.out.print(n.data + ” “); inorder(n.getRight()); } } 我知道它访问了树中每个节点的左右子节点,但我无法理解为什么它确实有效。

数独求解器的算法复杂度(Big-O)

我正在寻找“你如何找到它”,因为我不知道如何找到我的程序的算法复杂性。 我用java编写了一个数独求解器,没有效率的想法(我想尝试让它递归工作,我成功了!) 一些背景: 我的策略采用回溯来确定,对于给定的数独谜题,谜题是否只有一个独特的解决方案。 所以我基本上阅读了一个给定的谜题并解决它。 一旦我找到了一个解决方案,我不一定完成,需要继续探索进一步的解决方案。 最后,三种可能的结果之一发生:难题根本无法解决,拼图有独特的解决方案,或者拼图有多种解决方案。 我的程序从一个文件中读取拼图坐标,该文件对于每个给定的数字有一行,包括行,列和数字。 根据我自己的惯例,7的左上方标记为007。 执行: 我从文件中加载值,并将它们存储在一个二维数组中,我沿着数组向下直到找到一个空白(未填充的值),然后将其设置为1.并检查是否有任何冲突(值是否为i输入有效或无效)。 如果是,我转到下一个值。 如果不是,我将值递增1,直到找到一个有效的数字,或者如果它们都不起作用(1到9),我返回1步到我调整的最后一个值,然后递增该值(使用递归)。 当所有81个元素都被填满时,我完成了解决,没有冲突。 如果找到任何解决方案,我将它们打印到终端。 否则,如果我尝试在我最初修改的FIRST元素上“返回一步”,则表示没有解决方案。 我的程序如何算法复杂度? 我以为它可能是线性的[O(n)],但我多次访问该数组,所以我不确定:( 任何帮助表示赞赏

是否有可能在Java 8中创建由递归定义的惰性(更好的无限)集合?

我可以创建一个递归闭包: static IntUnaryOperator fibo; fibo = (i) -> i<2 ? 1 : fibo.applyAsInt(i-1)+ fibo.applyAsInt(i-2); 但当然,它只是作为一个例子。 相反,如果我创建了一个惰性/无限列表/流,则可以以非常好的方式使用递归:不必多次计算任何成员。 我想到了以下结构: IntStream fi; fi=IntStream.iterate(0, i -> fi[i-1]+fi[i-2]); 但是那样它就行不通了 – 我无法通过索引从流中获取一个项目。另一个问题是,如果我以后再沿着流,它将被消耗,我不能重复使用它。 如果我将流复制到List,它就不再是懒惰了。 因此,我需要一些我可以通过索引解决的构造。 作为fibo(i) 。 编辑。 显然,解决方案不能是流,因为流不能使用两次。 我不想在每次调用F(i)时重复所有计算。

Java:递归查找列表中的最小元素

我将在前面说这是作业。 我只是在寻找一些指针。 我一直用这个来绞尽脑汁,而对于我的生活,我只是没有得到它。 我们被要求在列表中找到最小元素。 我知道我需要一个子列表,但在那之后我不确定。 任何指针都会很棒。 谢谢。 /** Find the minimum element in a list. * * @param ta list of integers * * @return the minimum element in the list */ public static int min(List t) { if (t.size() == 1){ return t.get(0); } else{ List u = t.subList(1, t.size());