【问题标题】:Iteration, Recursion, and Multiplication迭代、递归和乘法
【发布时间】:2015-04-20 06:10:30
【问题描述】:

我正在努力了解我的导师希望我做什么。在他的描述中“设计、实现和测试一个 Java 程序 Multiplication.java,其中包括一个迭代方法 multIterative 和一个递归方法 multRecursive。这两个方法采用相同的参数,两个正整数将相乘并返回相乘结果。对于两种方法都使用重复加法的技术来实现两个数字的乘法。例如,4 乘以 6 应计算为 6 + 6 + 6 + 6(即四乘六)。

我可以理解递归的乘法,但不能理解迭代。他想让我做阶乘吗?要不然是啥?我需要帮助理解。示例会有所帮助!

【问题讨论】:

  • 请教老师可能会有所帮助。

标签: java recursion


【解决方案1】:

while 循环应该可以解决问题

public int multiIterative(int firstNum, int secondNum){
    int result;
    while(secondNum > 0){
        result += firstNum;
        secondNum--;
    }
    return result;
}

【讨论】:

  • 嗯,这可以工作,但我还有其他东西,如果也可以工作
【解决方案2】:

谢谢,但我也想出了类似的方法。这也适用于迭代吗?

public static int multIterative(int a, int b) {

    if (b == 0) {

        return 1;

    } else if (b < 0) {

        return 0;
    }

    return a * multIterative(a, b - 1);

}

【讨论】:

  • 这将是递归而不是迭代。
  • 这是一个递归而不是迭代的例子。因为您在自身内部调用了 multiIterative()。
  • 对于这个递归函数,你可能只想返回一个 + multiRecursive(a,b-1);否则你会得到 a^n 而不是 a*n。
【解决方案3】:

好吧,那么在我的 multRecursion() 的递归中我做了

public static int multRecursive(int a, int b) {

    if (a == 0 || b == 0) {

        return 0;
    }

    return multRecursive(a, b - 1) + a;

}

【讨论】:

  • 还是直接使用 + multRecursive (a, b-1)?
  • 它们的工作方式应该相同。看起来不错@PatrickWilliamMcCully
  • if 语句的返回值也应该是 1 吗? @Danwakeem
  • 否,因为如果 a=6 和 b=4,您的递归函数将关闭一个,因为您的递归将从 6+1=7 开始,因此您的第二个将是 7+6=13 并且很快。 @PatrickWilliamMcCully 您也不需要该 if 语句中的 a == 0 。它不会伤害任何东西,但它是不必要的。
  • 好吧,我正在努力确保它只有正数
猜你喜欢
  • 2012-06-25
  • 2021-12-24
  • 1970-01-01
  • 2011-11-14
  • 1970-01-01
  • 2020-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多