java - 递归参数如何工作?

标签 java

public static int exponent(int baseNum, int exp) { 
     if (exp == 0) return 1; 
     else return baseNum * exponent(baseNum, --exp); 
}

我不明白这两个参数在这个递归方法中是如何工作的。是否将baseNum 值转换为指数乘以baseNum 然后返回?那么第二个参数(exp)也会做同样的事情,直到达到基本情况? 如果你能帮助我想象或分解它是如何工作的,那就太好了!谢谢。

最佳答案

这是使用 2 和 4 作为参数调用此递归方法的示例~(:

  • 指数(2, 4)
    • => 2 * 指数(2, 3)
      • => 2 * 指数(2, 2)
        • => 2 * 指数(2, 1)
          • => 2 * exponent(2, 0) <- exp == 0,返回 1,因此不再进行递归调用

所以要备份链条:

  • 2 * (1) => 2
  • 2 * (2) => 4
  • 2 * (4) => 8
  • 2 * (8) => 16

此特定方法的一个问题是,如果您在第一次调用时为 exp 传递负值,您将获得无限递归。最好检查 (exp <= 0) 而不是

关于java - 递归参数如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36266325/

相关文章:

java - 如何在 IntelliJ Idea 上设置 admob?

java - 使用动画在android中滑动 View

java - Android 中的 OpenNLP 在尝试初始化 posModel 时出现 FileNotFoundException

java - 在 Liferay 中添加新的网页内容版本

java - 在 KNIME 中使用外部 java 库。为什么一个类的初始化失败而另一个类的初始化成功?

java - 我想获取 jdk 的路径以在 ubuntu 中设置 JAVA_HOME

java - 在没有正则表达式的情况下在段的开头和结尾测试 'noise'

javascript - 如何在客户端使用 React 的 BrowserRouter,在服务端使用 Java REST API (Spring Boot)?

java - 由多个类加载器加载的同一个类 - Intellij 插件

java - 无法构建新的java spring项目