题目描述
分析
1. 等差数列求和
f(x)=x,{x| 1<=x<=1000}; sum={(1+f(x))*x}/2; 因不能用乘除,可以用 x»1=x/2 , Math.pow(x,2)=x^2
2. 递归
不能用条件语句,则可以用&& 符号的特性,A&&B 若A为false,则不执行B
代码实现
public enum QInterview64 {
instance;
// 等差数列
public int sumNums(int n) {
return (int)(n+Math.pow(n,2))>>1;
}
// 递归
public int sumNums1(int n) {
int sum=n;
boolean f=n>0&&(sum+=sumNums1(n-1))>0;
return sum;
}
public static void main(String[] args) {
// assert 45
SystemUtil.print(QInterview64.instance.sumNums(9));
// assert 45
SystemUtil.print(QInterview64.instance.sumNums1(9));
}
}