我试图使用循环将两个数字相乘。方法应该是添加数字然后循环,以使两个输入相乘。第一个必须使用while循环,这就是我所拥有的:
public static int wloopmultiply(int x, int y) {
int a = x;
while (x > 0) {
y = y + y;
a--;
}
不确定这里发生了什么以及它为什么不起作用。有帮助吗?此外,我需要做同样的事情,但使用递归而不是while循环,然后最后使用for循环。有什么提示吗?感谢。
答案 0 :(得分:2)
while
循环的条件是x > 0
,但是你在循环体中递减a
并且x
保持不变,因此会导致无限循环。
答案 1 :(得分:2)
有三个问题
x
a
y=5
,所以它是5 + 5,下一次迭代y=10
,所以它是10 + 10)。
public static int wloopmultiply(int x, int y) {
int a = x-1;
while (a > 0) {
y = y + x;
a--;
}
return y;
}
这三项改变应该使一切顺利
答案 2 :(得分:0)
循环非常简单:
int multiply(int x, int y){
int res = 0;
while(x > 0){
res += y;
x--;
}
return res;
}
int multiply(int x, int y){
int res = 0;
for(int i = 0; i < x; i++){
res += y;
}
return res;
}
在这里,我们将在每个递归步骤中再添加一个y
:
int multiply(x, y){
if(x == 0)
return 0;
return multiply(x - 1, y) + y;
}
这些示例适用于正整数,可能导致int溢出。尝试自己改进它们;)
答案 3 :(得分:0)
循环将是这样的:
int multiply(int x, int y){
int result = 0;
while(x > 0){
result += y;
x--;
}
return result;
}
我们可以致电multiply(int x, int y)
,例如System.out.println(multiply(3,5));
输出:15