使用递归乘以两个给定变量之间的所有整数

时间:2016-03-25 17:29:03

标签: loops recursion integer multiplication

是的,这是功课。我不是要求任何简单的答案,只是帮助朝着正确的方向前进。这里是赋值:“创建一个接收两个数字的函数:a和b。函数计算并返回a和b之间所有数字的乘法。创建此函数的三个版本。” 我使用for循环和while循环创建了函数,但我不知道如何使用递归 - 赋值的最后部分。

3 个答案:

答案 0 :(得分:3)

感谢承认这是一个功课问题。因此,虽然我不会给你答案,但我会给你一些指示。

编写递归函数时,需要考虑两个关键事项:

  1. 什么阻止了递归,
  2. 在递归停止之前会发生什么
  3. 在您的情况下,您必须计算数字列表的产品,其结果如下:

    1. 当列表中只有1个项目时,该功能应该怎么做? (即:当a和b相同时)
    2. 如何将一个元素乘以列表其余部分的乘积?
    3. 要获得额外的功劳,请查看尾部递归并理解为什么它可以帮助您降低内存使用率。

      这会给你足够的开始吗?

答案 1 :(得分:0)

这是dynamic programming的一个简单实例 - 您从一个问题开始并尝试通过将其分解为更容易解决和组合结果的问题来解决它。

然后,您通常可以通过向后工作来解决这些问题:什么是最简单的案例,您可以立即回答?如果这个问题比那个问题更困难,你会怎么做?

当您明确被告知找到递归解决方案时,您可以假设您正在寻找可以直接返回结果的方法,或者必须使用修改后的参数调用自身,并对该结果执行某些操作得到它自己。

如果失败,假设这个问题有点人为,那么考虑一下如何使用递归结构实现一个for循环,然后直接调整你现有的for循环。没有考虑到打破问题的本质,只是看看如何以不同的方式表达现有的解决方案。

答案 2 :(得分:-1)

function recursiveMultiplication(num1, num2) {
    if (num2 == num1) {
        return num2;
    }

    return num2 * recursiveMultiplication(num1, num2 - 1);
}
console.log(recursiveMultiplication(5, 8));