Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 两个给定变量之间所有整数的递归乘法_Loops_Recursion_Integer_Multiplication - Fatal编程技术网

Loops 两个给定变量之间所有整数的递归乘法

Loops 两个给定变量之间所有整数的递归乘法,loops,recursion,integer,multiplication,Loops,Recursion,Integer,Multiplication,是的,这是家庭作业。我不是要求任何简单的答案,只是帮助我们朝着正确的方向前进。下面是作业:“创建一个接收两个数字的函数:a和b。该函数计算并返回a和b之间所有数字的乘法。创建此函数的三个版本。” 我使用for循环和while循环创建了这个函数,但是我不知道如何使用递归——赋值的最后一部分 承认这是个家庭作业问题,真是太好了。因此,虽然我不会给你答案,但我会给你一些建议 编写递归函数时,需要考虑两个关键问题: 什么停止了递归,以及 在递归停止之前会发生什么 在您的情况下,您必须计算一系列数字的乘积

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

承认这是个家庭作业问题,真是太好了。因此,虽然我不会给你答案,但我会给你一些建议

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

  • 什么停止了递归,以及
  • 在递归停止之前会发生什么
  • 在您的情况下,您必须计算一系列数字的乘积,其计算公式如下:

  • 当列表中只有一项时,函数应该做什么?(即:当a和b相同时)
  • 如何将一个元素乘以列表其余部分的乘积
  • 要获得额外的积分,请查阅尾部递归,了解它为什么可以帮助降低内存使用率


    这给了你足够的开始吗?

    承认这是一个家庭作业的问题,我很荣幸。因此,虽然我不会给你答案,但我会给你一些建议

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

  • 什么停止了递归,以及
  • 在递归停止之前会发生什么
  • 在您的情况下,您必须计算一系列数字的乘积,其计算公式如下:

  • 当列表中只有一项时,函数应该做什么?(即:当a和b相同时)
  • 如何将一个元素乘以列表其余部分的乘积
  • 要获得额外的积分,请查阅尾部递归,了解它为什么可以帮助降低内存使用率

    这给了你足够的开始吗?

    这是一个简单的例子-你从一个问题开始,尝试通过将它分解成更容易解决的问题并结合结果来解决它

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

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

    失败了,考虑到这个问题是微不足道的,考虑一下如何用递归结构来简单地实现一个for循环,然后直接调整现有的for循环。对于分解问题的本质没有什么好的想法,只是看看如何以不同的方式表达您现有的解决方案。

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

    function recursiveMultiplication(num1, num2) {
        if (num2 == num1) {
            return num2;
        }
    
        return num2 * recursiveMultiplication(num1, num2 - 1);
    }
    console.log(recursiveMultiplication(5, 8));
    
    然后,您通常可以通过反向工作来解决这些问题:最简单的情况是什么,您可以立即回答?如果问题比那难一点,你会怎么做

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


    失败了,考虑到这个问题是微不足道的,考虑一下如何用递归结构来简单地实现一个for循环,然后直接调整现有的for循环。对于分解问题的本质没有什么好的想法,只是看看如何以不同的方式表达现有的解决方案。

    说实话,我今天已经学会了递归。你所需要的就是奉献和努力工作。但是不要一个人做每件事,学习其他人是如何用这种方式编码的,你会把你的问题分成更简单的形式:说实话,我今天已经学会了递归。你所需要的就是奉献和努力工作。但是不要一个人做每件事。学习其他人是如何用这种方式编码的。你会把你的问题分成更简单的形式:D
    function recursiveMultiplication(num1, num2) {
        if (num2 == num1) {
            return num2;
        }
    
        return num2 * recursiveMultiplication(num1, num2 - 1);
    }
    console.log(recursiveMultiplication(5, 8));