Tag: 递归

java中的递归

给定此方法调用: public class MainClass { public static void main(String[] args) { System.out.println(fib(3)); } private static int fib(int i) { System.out.println(“Into fib with i = ” + i); if (i < 2) { System.out.println("We got here"); return i; } return fib(i-1) + fib(i-2); } } 我期望: * fib(i-1) to return 2 * fib(i-2) to return 1 […]

递归方法如何打印shap

我想知道递归方法如何工作来打印由具有给定“宽度”输入数字的较小X组成的大X,这保证是奇数。 “宽度”是沿着一条大X的X的长度(数量)。 宽度输入数字= 3的示例该方法将打印此形状! XX X XX 我试着解决这个问题,但我不能在这里帮助我..在java代码中, 这是我的代码,他的工作正常,但在numberinput = 7或5时打印错误 public static String shape(String i,int numberinput) { //error check, not working for even numbers if(numberinput%2 == 0) return null; //terminating condition, stop recursion when this occurs. if(numberinput == 1) return “X”; else return “X”+” “+i+”\n” +” “+shape(” “+i,numberinput-2)+” “+”\n”+i+” “+”X”; } 当numberinput = 5时,他打印出来 […]

Java | 仅使用递归和条件创建显式加法函数

前言 通过在我的日程安排中找到一些空闲时间,我对自己提出了提高递归技能的问题(不幸的是)。 作为实践,我想通过使用递归来重新创建所有运算符,第一个是添加。 虽然我有点卡住了。 题 如上所述,我想通过仅使用递归和条件来重新创建加法运算符。 虽然我完成了很多代码,但仍然存在一个问题,因为我包含了一个加法运算符。 这是代码(运行正常,并在正,负和零输入的所有变体中按预期添加)。 我还包括一些平庸的评论作为帮助。 public class Test { public static void main(String[] args) { // Numbers to add int firstNumb = -5, secondNumb = 3; // Call the add function and save the result int result = add(firstNumb, secondNumb); // Print result System.out.println(result); } /* * Function recursively takes a […]

带递归的堆栈溢出exception

我正在尝试制作一个计算双因子的程序( 例如 – n = 3,=>(3!)!= 6!= 720 )但我有一些递归底部的问题,我有堆栈溢出exception。 public static long df(long n) { if (n == 1) { return 1; } else { return df(n * df(n – 1)); } } public static void main(String[] args) { System.out.println(df(3)); }

使用递归比较字符串以确定哪个字母顺序排在第一位Java

我正在尝试编写一个方法,使用递归来比较字符串str1和str2,并确定它们中的哪一个按字母顺序排列(即,根据字典中单词的使用顺序)。 如果str1按字母顺序排在第一位,则该方法应返回int 1 。 如果str2按字母顺序排在第一位,则该方法应该返回int 2 。 如果两个字符串相同,则该方法应返回int 0 。 我知道Java API中有一个compareTo方法,但我想知道如何在没有这个的情况下执行此操作 这是我到目前为止,但我不完全确定如何继续 } if (str1.length().equals(str2.length())) return 0; } else { (str.substring(1, str.length())); 任何想法将不胜感激

经过一定的步骤后停止递归

这个问题令我感到困惑。 我有一棵树,我想写一个方法,计算某个节点的孙子数(但不是伟大的granchildren)。 我不能使用循环,只能递归。 所以问题是如何实现我的基础案例? 我怎么让它停下来? 我想不出这会实现的方式……

我怎么能得到所有在Java(递归)中有重复的组合?

我需要找到一种方法来从这样的组合中删除重复项: 输入: 3和2,其中3是范围(从1到3),2是每个组合的长度 输出 : {1, 1} {1, 2} {1, 3} {2, 1} {2, 2} {2, 3} {3, 1} {3, 2} {3, 3} 预期输出 : {1, 1} {1, 2} {1, 3} {2, 2} {2, 3} {3, 3} 所以我们从{1, 1} -> {1, 2} -> {1, 3} ->但{2, 1}是{2, 1}的副本,所以我们忽略它,依此类推。 这是我的代码: import java.util.Scanner; public class Main { […]

Java中数组中所有数字的LCM

我有一个int数组,我正在尝试找到数组中所有值的LCM(最小公倍数)。 我分别写了一个lcm方法; 它需要两个值作为输入,并返回lcm。 我的lcm方法工作得非常好,但是当我用它来查找所有值的LCM时,我得到了错误的答案。 这是我的gcd和lcm方法: public static int gcd(int a, int b){ if (a<b) return gcd(b,a); if (a%b==0) return b; else return gcd(a, a%b); } public static int lcm(int a, int b){ return ((a*b)/gcd(a,b)); } 这就是我对lcm数组值的看法: public static int lcmofarray(int[] arr, int start, int end){ if ((end-start)==1) return lcm(arr[start],arr[end-1]); else return (lcm (arr[start], lcmofarray(arr, start+1, […]

递归作业

我有一个功课问题我可能会过度思考,我需要逆转Hello. 使用递归,以便最终结果没有. 我目前的方法是: public void foo(){ Scanner scan = new Scanner(system.in); char c = scan.nextChar(); if (c!=’.’) foo(); System.out.print(c); } 这似乎输出相反,但它仍然有. 。 有人能指出我正确的方向摆脱这段时期吗?

生成字符数组的所有排列

在阅读了很多“生成字符串排列”的post之后,我尝试用Java编写它。 1)将第一个字符开始与组合中其余字符交换。 但是当我尝试使用递归实现它时,它只给了我一个长度为3的字符串的字符串:(。 public static void main(String[] args) { char a[]= “123”.toCharArray(); printPermutation(a,0); } private static void printPermutation(char[] a, int i) { if(i==a.length-1) System.out.println(new String(a)); else{ for(int x=i+1;x<a.length;x++) { swap(a,i,x); printPermutation(a,x ); swap(a,i,x); } } } private static void swap(char[] a, int i, int x) { char t=a[i]; a[i]=a[x]; a[x]=t; } 我期待打印6个字符串。 预期:123,132,213,231,312,321