Tag: 递归

在整数数组中找到与给定数字求和的最小集合

给定sum和一个正整数数组,找到其元素加起来为s的最小子集。 例如,给定数组{1,2,3,4,5}和sum s = 8,最小子集将是{3,5}。 到目前为止,我可以使用递归来解决使用贪婪方法添加到数组的一组整数,但是我找不到如何找到最小子集。 我应该研究一个特定的算法吗?

递归的Sierpinski三角形不是递归的

我正在为递归的Sierpinski三角形做一个程序,并且不知道如何更改数组xm[]和ym[]中的点以便执行此操作。 更具体地说,当我运行这个程序时,只绘制一个带有一个蓝色内三角的轮廓三角形。 任何帮助将不胜感激! public class recursiveSierpinski { public static void draw(int n, double x0, double y0, double x1, double y1, double x2, double y2) { // if reach base case, method return if (n==0) return; // define array xm, ym to store x and y values of midpoints double [] xm = new double[3]; double […]

try-catch语句中的递归调用

我有以下代码片段: public static void main(String[] args) { foo(); } public static void foo() { try { foo(); } catch (Throwable t) { foo(); } } 谁能解释一下这里发生了什么? 请详细说明。 我已经改变了这一部分并添加了println方法来展示一些东西: … try { System.out.println(“+”); foo(); } catch (Throwable t) { System.out.println(“-“); foo(); } … 我得到这样的东西(过程没有停止): + + + + +– +– + +– +– + + +– […]

学习java,找不到符号

我正在学习Java并且坚持自我测试练习写一个向后打印字符串的递归函数… 我理解编译器错误,但我不知道该怎么做。 我的代码…… class Back { void Backwards(String s) { if (s.length = 0) { System.out.println(); return; } System.out.print(s.charAt(s.length)); s = s.substring(0, s.length-1); Backwards(s); } } class RTest { public static void main(String args[]) { Back b; b.Backwards(“A STRING”); } } 编译器输出…… john@fekete:~/javadev$ javac Recur.java Recur.java:3: error: cannot find symbol if (s.length = 0) { […]

递归深度 – Java中的制表符和凹痕

我想格式化我的Java程序输出,以便我可以看到递归的“有多深”。 怎么做? 重要的是不要迷失在我的递归树中。 示例输出(用于从0开始计算第n个数字的普通递归函数): This is the first recursive call. Input value: 3. This is the second recursive call. Input value: 2. This is the 3rd recursive call. Input value: 1. Output value : 1. This is again the second recursive call. Input value: 2. Output value : 1 + 1. This is again the […]

如何递归authomata Strange Planet练习?

这个基本思想是,在一个星球上有三种不同的物种,这三种物种中只有两种可以共同生育,结果是这种物种会死于第三种物种的两个新物种,例如,我们有ab和c,物种a和b聚集在一起,让2 c新成员出生。 它就像:1a 1b和1c(对不起语言) 当a和b想要有孩子时他们聚在一起但死了但有两个孩子,这些新孩子来自物种c,结果是: 0a 0b和3 c 在这个casie中,我们说星球成功了,c是占主导地位的。 但是当我有3a 4b 2c并且我需要看看这三个物种中是否有任何一个能在这个星球上成功。 我认为我可以使用递归解决方案,但我总是得到错误: Exception in thread “main” java.lang.StackOverflowError 在函数中我试图使用递归。 这是我的代码,我知道有些事情是错的,但我不知道是什么。 公共类Automata2 { public static void main(String[] args) { int N = 2; while (N <= 14) { partition(N); N++; } } public static void partition(int N) { int n1,n2,n3; for(n1=0;n1<=N;n1++){ for(n2=0;n2<=N;n2++){ for(n3=0;n3<=N;n3++){ if((n1+n2+n3)==N){ strPlanetA(n1, n2, […]

Java:二叉树递归方法

我是java的新手,我们的一个任务要求我创建一个包含int值节点的二叉树。 我的教授希望我们使用一个包含main方法的类。 我应用了两个递归方法,一个用于插入节点,另一个用于显示现有节点。 然而,每当我运行我的代码时,控制台只显示我输入的最新节点。 我使用的方法有问题吗? 这是我到目前为止: import java.util.Scanner; public class node { private int value; static node root; public node leftLink; public node rightLink; public node(int v) { this.value = v; } public int getValue() { return value; } static void traverseShow() { if(root.leftLink != null){ root = root.leftLink; traverseShow(); } System.out.println(root.getValue()); if(root.rightLink != null) […]

简单的递归示例 – 请帮助我理解递归

public static int triple(int n) { if (n == 0) return 0; else total = 3 + triple(n-1); System.out.println(total); return total; } 好的,所以我有一个简单的回忆示例,我似乎无法掌握,我希望有人能够让我逐步了解程序如何获得其输出。 这就是我认为会发生的事情。 让我们说n=5所以,程序循环和命中total = 3 + triple(5-1) ,我认为这将等于7 ..这是错误的程序打印 3 6 9 12 15 所以…然后我认为三重必须在打印总数之前再次运行……我相信它确实如此但我根本不明白它的总和是怎么回事。 因为它看起来像这样: 3 + triple(4) 3 + triple(3) 3 + triple(2) 3 + triple(1) =3 有人可以解释一下,因为你我可以很失落!

1 + 2的所有组合,加上n

我正在尝试解决这个问题,作为编程面试的准备: 青蛙只向前移动,但它可以步长1英寸或跳跃2英寸长。 青蛙可以使用不同的步骤和跳跃组合覆盖相同的距离。 编写一个函数,计算青蛙可以用来覆盖给定距离的不同组合的数量。 例如,可以通过三种方式覆盖3英寸的距离:步进步骤,步进跳跃和跳跃步骤。 我认为有一个非常简单的解决方案,但我似乎无法找到它。 我想使用递归,但我看不出如何。 这是我到目前为止: public class Frog { static int combinations = 0; static int step = 1; static int jump = 2; static int[] arr = {step, jump}; public static int numberOfWays(int n) { for (int i = 0; i < arr.length; i++) { int sum = 0; sum += […]

Fibonacci算法的时间复杂度

所以,我在Java中有一个递归方法来获得’第n个斐波纳契数 – 我唯一的问题是:时间复杂度是多少? 我认为这是O(2 ^ n),但我可能弄错了? (我知道迭代更好,但这是一个练习) public int fibonacciRecursive(int n) { if(n == 1 || n == 2) return 1; else return fibonacciRecursive(n-2) + fibonacciRecursive(n-1); }