这个Stacked Number生成代码有什么问题?

时间:2016-07-10 12:31:17

标签: java algorithm

这是我的作业:

  

将堆叠数定义为一个数,它是某些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;
    }
}

1 个答案:

答案 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