题目描述
求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
本题属于思维题
解题思路
- 书上写了大一堆,我能简单理解的还是一下这种设置static变量,利用他的特性,在多次创建对象时候实现一个累加。
算法图解
参考代码:
package offer;
/**
* 求1+2+。。。n
*/
public class Offer64 {
public static void main(String[] args) {
Temp.ReSet();
new Temp();
new Temp();
new Temp();
new Temp();
new Temp();
System.out.printf(Temp.Get() + "");
}
}
package offer;
public class Temp {
private static int N = 0;
private static int sum = 0;
public Temp() {
++N;
sum += N;
}
public static void ReSet() {
N = 0;
sum = 0;
}
public static int Get() {
return sum;
}
}
附录
该题源码在我的 ?Github 上面!