(推荐教程:java课程)
1、暴力解法
使用for循环直接逐个求解,算法复杂度为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、利用求和公式
利用等差数列求和公式
复杂度为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=5050sumbystream=5050sumbyformula=5050
相关推荐:java入门
以上就是java计算100以内的正整数和的三种方法的详细内容。
