我试图了解递归是如何工作的。以下是如何使用循环将两个数字相乘的示例:
public int mult(int a, int b){
int sum=0;
for (int i=0;i<b;i++){
sum+=a;
}
return sum;
}
请告诉我如何使用递归重新制作这个循环?(仅使用加法)
我试图了解递归是如何工作的。以下是如何使用循环将两个数字相乘的示例:
public int mult(int a, int b){
int sum=0;
for (int i=0;i<b;i++){
sum+=a;
}
return sum;
}
请告诉我如何使用递归重新制作这个循环?(仅使用加法)
前额的解决方案非常简单,但即使在这里也有必要考虑到 rake 的存在:
也就是说,首先我们深入到b元素的链中,然后我们开始往回爬,积累总和。
让我解释一下我们谈论的是哪种耙子:
乘数可以是负数。如果不考虑这一点,就会出现无限递归。
对于大b,链将比堆栈可以容纳的更长。因此,应取最小的因素作为链的长度。
与快速求幂算法类似,它是可能的:
js上的工作演示:
也可以这样:
但这一切都取决于你需要做什么样的操作。