Tag: 递归

使用递归来反转整数而不使用字符串

我已经尝试了一段时间但是无法让它发挥作用。 我试图有一个方法来反转整数而不使用字符串或数组。 例如,123应以整数forms反转为321。 我的第一次尝试: /** reverses digits of integer using recursion */ public int RevDigs(int input) { int reverse = 0; if(input == 0) { return reverse; } int tempRev = RevDigs(input/10); if(tempRev >= 10) reverse = input%10 * (int)Math.pow(tempRev/10, 2) + tempRev; if(tempRev 0) reverse = input%10*10 + tempRev; if(tempRev == 0) reverse = […]

将递归函数转换为for循环?

每个递归函数都有一个等效的循环吗? (两者都达到了相同的效果)。 我有这个递归函数: private static boolean recur(String word, int length) { if(length == 1 || length == 2) return false; if(length == 0) return true; if(words[length].contains(word.substring(0, length))) return recur(word.substring(length), word.length() – length); return recur(word, length-1); } 假设单词是Set [],并且单词[i] =具有长度为i的单词的集合。 我要做的是:用一个单词启动递归(比如说,“stackoverflow”,没有空格),我试图找出这个单词是否可以切成子词(“堆栈”,“结束”,“流程”) ..子词的最小长度是3,并且假设长度i的子词在Set words [i]中。 我可以确认这段代码有效,但它可能有内存问题,所以我想将它转为循环..如果可能的话。 你需要更多信息吗? 谢谢。

使用Java进行排序和二进制搜索

我被要求排序和搜索数组。 排序数组很简单,我的代码工作,但每当我尝试调用二进制搜索方法时,它适用于数组中的第一个元素,但作为结果给我“-1” 我的完整代码如下: public static void main(String[] args) { int[] array = new int[5]; array[0] = 50; array[1] = 40; array[2] = 10; array[3] = 20; array[4] = 100; sort(array, (array.length – 1)); for (int x = 0; x 0) { int max = findMax(a, last); swap(a, last, max); sort(a, last – 1); } } […]

(Java)查找数组中的所有可能对

当我尝试做这样的事情时,我意识到我真的需要去上大学! 无论如何我有一个字符串数组(275)我需要循环遍历它们并在java中创建所有可能的对的字符串。 我一直在学习递归,但我找不到答案。 谢谢

如何编写递归方法来返回int中的数字总和?

所以这是我的代码到目前为止。 public int getsum (int n){ int num = 23456; int total = 0; while (num != 0) { total += num % 10; num /= 10; } } 问题是我无法/知道如何将其更改为递归方法我是一种新的递归方式,我需要一些帮助来实现此方法来改变它以便递归。

生成一定长度的所有排列

假设我们有一个字母“abcdefghiklimnop”。 如何以有效的方式以五组为单位递归地重复生成这种字母表的排列? 我几天来一直在努力解决这个问题。 任何反馈都会有所帮助。 基本上这与以下内容相同: 生成给定字符串的所有排列 但是,我只想要整个字符串的FIVE长度排列。 我无法弄清楚这一点。 对于“abcdefghiklimnop”长度为5的所有子串,找到子串的排列。 例如,如果子字符串是abcdef,我希望它的所有排列,或者如果子字符串是defli,我会想要该子字符串的所有排列。 下面的代码给出了字符串的所有排列,但我想用它来查找字符串大小为5的所有子串的所有排列。 public static void permutation(String str) { permutation(“”, str); } private static void permutation(String prefix, String str) { int n = str.length(); if (n == 0) System.out.println(prefix); else { for (int i = 0; i < n; i++) permutation(prefix + str.charAt(i), str.substring(0, i) + str.substring(i+1, […]

递归斐波那契算法的空间复杂度是多少?

这是Cracking the Coding Interview(第5版)中Fibonacci序列的递归实现 int fibonacci(int i) { if(i == 0) return 0; if(i == 1) return 1; return fibonacci(i-1) + fibonaci(i-2); } 在观看关于该算法的时间复杂度的video后, 斐波纳契时间复杂度 ,我现在理解为什么该算法在O(2 n )中运行。 然而,我正在努力分析空间复杂性。 我在网上看了一下这个问题。 在这个Quora线程中,作者声明“在你的情况下,你有n个堆栈帧f(n),f(n-1),f(n-2),…,f(1)和O(1 )“。 你不会有2n堆栈帧吗? 说f(n-2)一帧将用于实际的呼叫f(n-2),但不会有来自f(n-1)的呼叫f(n-2)?

有没有时间你不会使用递归?

我有一个大学实验室的问题; 编写一个简短的程序,输出通过使用字符’c’,’a’,’r’,’b’,’o’和’n’形成的所有可能的字符串。 这似乎是一个常见的面试问题,并有详细记录。 所以我使用递归方法用Java编写它并不太难, 何时或为什么你会选择不使用递归?最简单的方法是什么? 我开始编写一个计数器,该计数器将在基数6上倒数,然后输出将引用char并打印字符串。 谢谢,

仅使用递归创建星形三角形

我需要编写一个像printTriangle(5);一样的方法printTriangle(5); 。 我们需要创建一个迭代方法和一个递归方法(没有任何迭代)。 输出需要如下所示: * ** *** **** ***** 此代码适用于迭代,但我无法使其适应递归。 public void printTriangle (int count) { int line = 1; while(line <= count) { for(int x = 1; x <= line; x++) { System.out.print("*"); } System.out.print("\n"); line++; } } 我应该注意,你不能使用任何类级变量或任何外部方法。

递归地对数组中的整数求和

我有一个程序,我正在尝试为类返回使用递归返回数组中所有整数的总和。 这是我迄今为止的计划: public class SumOfArray { private int[] a; private int n; private int result; public int sumOfArray(int[] a) { this.a = a; n = a.length; if (n == 0) // base case result = 0; else result = a[n] + sumOfArray(a[n-1]); return result; } // End SumOfArray method } // End SumOfArray Class 但我相信,我得到的三个错误都是相关的,但我无法弄清楚为什么它会找到一种null: […]