当前位置: 首页 > 面试题库 >

基本Java递归方法

南门意蕴
2023-03-14
问题内容

我在使用Java中的基本递归问题时遇到了很多麻烦;任何指针都很棒。

“写一种静态递归方法来打印出几何序列的第n个项:2、6、18、54。”

据我所知,我应该在代码中的某处递归地将某物乘以3,但我一直在努力寻找方法。我知道我需要终止声明,但是何时发生?我需要帮手方法吗?


问题答案:

一个递归函数是一个函数,它的实现引用自身。以下是一些有趣的示例:

public class Inception {
   public void dream() {
      boolean enoughDreaming = false;
      //Some code logic below to check if it's high time to stop dreaming recursively
      ...
      ...

      if(!enoughDreaming) {
           dream(); //Dream inside a Dream
      }
   }
}

解决问题的方法:

public class GeometricSequence {
    public static void main(String[] args) {
        //Below method parameters - 5 = n, 1 = count (counter), res = result (Nth number in the GP.
        System.out.println(findNthNumber(5, 1, 2));

    }

    public static int findNthNumber(int n, int count, int res) {
        return ((count == n)) ? res : findNthNumber(n, count+1, res *3);
    }
}

编辑

上面的类使用“ int”,它仅对少量数字有效(由于Integer Overflow问题)。下列类别适用于所有类型/数字:

public class GeometricSequence {
    public static void main(String[] args) {
        //Below method parameters - 5 = n, 1 = count (counter), res = result (Nth number in the GP.
        System.out.println(findNthNumber(2000, 1, new BigInteger("2")));

    }

    public static BigInteger findNthNumber(int n, int count, BigInteger res) {
        return ((count == n)) ? res : findNthNumber(n, count+1, res.multiply(new BigInteger("3")));
    }
}


 类似资料:
  • 问题内容: 我在上面直接写了上面的内容,因此可能无法编译,但认为可以。 任何人都可以从存储的角度来简短地解释它的工作原理吗?它通过计算5 (5-1)开始,然后依次下降到4 (4-1)然后是3 *(3-1).....直到达到1,它将只返回1,对吗?抱歉,我太粗略了,我只想知道这是如何工作的 谢谢 但随着工作的进行,它将获得各个阶段的值 5 (5-1)4 (4-1)… … … 这些如何存储然后取回,或

  • 我写了一个到达基本情况的方法(我可以告诉你,因为它打印了print语句),但是它会循环返回null(在方法的结尾)。为什么我的方法没有在基本情况下停止? 编辑:此外,如果一个对象不存在于我的BST中,它不会返回null。我得到了一个空指针异常,这是不应该发生的,因为或语句

  • 我花了一段时间研究以下算法: 你会得到不同面额的硬币和总金额。写一个函数来计算你需要的最少数量的硬币来组成这个数量。如果这些硬币的任何组合都不能弥补这个金额,返回-1。 例1:币=[1,2,5],金额=113 (11 = 5 5 1) 例2:硬币=[2],金额=3返回-1。 注意:你可以假设每种硬币的数量是无限的。 这可能不是解决问题的最有效方法,但我想我可以通过尝试每一个硬币并每次尝试启动一个新

  • 这个问题不是为作业做的,尽管它是一个典型的“类似作业”的问题,我试图用不同的方法来解决。 我想写一个方法,它将使用深度优先搜索算法递归地遍历二叉树,以找到字符的匹配。一旦它找到匹配的字符,我希望它返回一个字符串,该字符串使用0和1映射该字符在树中的位置。例如,“001”将指示通过到根节点的左节点、该节点的左节点,然后到该节点的右节点来找到字符。 下面是我目前拥有的代码: 该方法最初被发送要搜索的字

  • 我有两个非递归方法,其中一个读取字符串中的总“e”字符,另一个检查 ArrayList 是否按字母顺序排列。 递归方法的定义是方法调用自身。我相信我理解这个概念,但要实现它或将其转换为递归方法确实很困难。我怎样才能将这些方法转化为递归方法,同时我应该如何思考?此外,这是我的另一种方法,它只打印出指定数字大小的数字。 条件方法检查数字的第一个数字(从右起)是否大于第二个数字,并再次检查第二个是否大于

  • 问题内容: 因此,我已经构建了该程序来构建不同的楼梯案例。本质上,问题是:给定整数N,您可以建立楼梯的几种不同方式。确保N大于3且小于200。任何先前的步骤都不能大于其后续步骤,否则会破坏楼梯的目的。 所以给定N = 3,您可以建立一个楼梯:2步,然后再步1步 给定N = 4,您可以建立一个楼梯:3步,然后再步1步 给定N = 5,您可以构建两个楼梯:3步,然后2步,或4步,然后1步。 我的方法在