有人可以解释一下这个递归函数是怎么做的吗?我很难理解如何使用+
来增加数字 static int Multiply(int x, int y)
{
if (y == 1)
{
return x;
}
else
{
return x + Multiply(x, y - 1);
}
}
答案 0 :(得分:8)
记住你的基本算术。
X * 2 = X + X
X * 3 = X + X + X
等
所以我可以将X * 3
分解为
X * 3 = X + (X * 2)
所以在你的功能中:
X * Y = X + (X * (Y-1))
因此
X * Y = Multiply(X, Y) = (X + Multiply(X, Y -1))
这主要是递归。
答案 1 :(得分:2)
用例子说明......
Multiply(5, 4) will call
Multiply(5, 3) will call
Multiply(5, 2) will call
Multiply(5, 1)
对于每次通话,它会累计添加5个
5 + 5 + 5 + 5 = 20
祝你好运!
答案 2 :(得分:0)
简单。例如,
5 + 5 + 5 = 5 x 3
我们可以简单地将其设为Multiply(5, 3)
答案 3 :(得分:0)
它是:
x + y(count)-1.
x+(x + (y count-1))
示例:
if x=3 y=4
x+((y-1))
3+(3)=> iteration1
3+(3+3) => iteration 2
3+(3+3+3) => iteration 3
Final => 3+(3+3+3)
Result => 12
答案 4 :(得分:0)
在给定堆栈限制的情况下,递归不是满足此要求的方法。另外,用(1,0)来评估你的函数,观察y小于1的情况。
这是一种使用加法“乘法”的方法,只有借助于递增,这可以说是+/- 1加法:
static int Multiply(int x, int y)
{
int result = 0;
while (y > 0)
{
result += x;
y--;
}
while (y < 0)
{
result -= x;
y++;
}
return result;
}
答案 5 :(得分:0)
该方法不正确,因为当您尝试乘以零时它会崩溃。
我写了一个正确的方法。
public static int Product(int a, int b)
{
if (a == 0 || b == 0) return 0;
else return a + Product(a,b - 1);
}