方法は次のとおりです:
(推奨チュートリアル: java コース)
1. 残酷な解決策
for ループを使用して問題を 1 つずつ直接解決すると、アルゴリズムの複雑さは O ( n ) O(n)O(n)
/** * <p>暴力解法</p> * @param startInclusive * @param endExclusive * @return */ public int sumByDirect(int startInclusive, int endExclusive){ int sum = 0; for (int i = startInclusive; i < endExclusive; i++) { sum += i; } return sum; }
2 になります。フロー プログラミング
は、ブルート フォース ソリューションと同じですが、宣言を使用します コードが少なく読みやすいフロー プログラミング スタイル
#/** * <p>流式编程</p> * @param startInclusive * @param endExclusive * @return */ public int sumByStream(int startInclusive, int endExclusive){ return IntStream.range(startInclusive, endExclusive).sum(); }
3. 総和式の使用
##等差数列和式の使用# #complex 次数は O ( 1 ) O(1)O(1)
/** * <p>利用求和公式</p> * @param startInclusive * @param endExclusive * @return */ public int sumByFormula(int startInclusive, int endExclusive){ return ((startInclusive + endExclusive - 1) * (endExclusive - startInclusive) ) >> 1; }
テスト:
@Test public void Test() { System.out.println("sumByDirect=" + sumByDirect(1, 101)); System.out.println("sumByStream=" + sumByStream(1, 101)); System.out.println("sumByFormula=" + sumByFormula(1, 101)); }
sumByDirect=5050 sumByStream=5050 sumByFormula=5050
以上がJava で 100 以内の正の整数の合計を計算する 3 つの方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。