色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

JAVA求連續自然數和為n的值

傅智翔1年前7瀏覽0評論

JAVA中有很多數學問題可以通過編程解決,比如求連續自然數和為n的值。

public static void findContinuousSequence(int sum) {
int small = 1, big = 2;
int curSum = 3;
while (small< big) {
if (curSum == sum) {
printContinuousSequence(small, big);
}
while (curSum >sum && small< big) {
curSum -= small;
small++;
if (curSum == sum) {
printContinuousSequence(small, big);
}
}
big++;
curSum += big;
}
}
public static void printContinuousSequence(int small, int big) {
for (int i = small; i<= big; i++) {
System.out.print(i + " ");
}
System.out.println();
}

這里使用了雙指針的思想,從1和2開始,計算當前區間內數的和,如果等于n,則輸出結果;如果大于n,則縮小區間左端點small的值,重新計算區間和;如果小于n,則擴大區間右端點big的值,重新計算區間和。這樣不斷更新區間,直到小指針small大于等于中指針big停止。

在雙指針算法中,有幾個細節需要注意:

  • 當small大于等于(sum+1)/2時,肯定不會有連續的數序列和等于sum。因為序列至少包含兩個數,此時第一個數最大為sum/2,再加上后面的數就已經超過sum了。
  • 不要忘記最后一個連續的數序列的輸出。