这是我的作业:
将堆叠数定义为一个数,它是某些n的前n个正整数之和。前5个堆叠的数字是:
1 = 1 3 = 1 + 2 6 = 1 + 2 + 3 10 = 1 + 2 + 3 + 4 15 = 1 + 2 + 3 + 4 + 5
注意,从上面我们可以推断出7,8和9不是堆叠数,因为它们不能是从1开始的任何正整数序列的总和。写一个名为isStacked的函数,如果它的参数返回1堆积。否则返回0.其签名为:
int isStacked(int n);
因此,例如,isStacked(10)应该返回1并且isStacked(7)应该返回0.
这是我的代码:
public class isStacked {
public static void main(String[] arg) {
System.out.println(isStacked(5));
System.out.println(isStacked(6));
System.out.println(isStacked(7));
System.out.println(isStacked(45));
System.out.println(isStacked(12));
}
static int isStacked(int a) {
int b = 0;
for (int i = 0; i <= a; i++) {
b = b + i;
if (b > a)
break;
}
if (b == a)
return 1;
return 0;
}
}
答案 0 :(得分:2)
当你找到b == a
时,你应该从循环内返回true,因为如果你在b==a
时留在循环中,在下一次迭代中b
将超过a
你将返回false。
static boolean isStacked(int a) {
int b = 0;
for (int i = 0; i <= a; i++) {
b = b + i;
if (b == a)
return true;
else if (b > a)
return false;
}
return false;
}
除此之外,您应该使用boolean
作为返回类型,而不是int
。