面试题64:求1+2+…+n
题目要求:
求1+2+…+n,要求不能使用乘除法,for,while,if,else,switch,case等关键词及条件判断语句?:。
解题思路:
不能用循环,那么可以使用递归调用求和。但又不能使用if,结束条件如何生效?可以使用如下形式替代if语句
替代if的一种方式:boolean b=判断条件&&(t=递归执行语句)>0
b并没有实际的用途,只是为了使表达式完成。当判断条件不满足,递归也就结束了。
package chapter6;
/**
* Created with IntelliJ IDEA
* Author: ryder
* Date : 2017/8/20
* Time : 19:59
* Description:不使用乘除、for、while、if、switch、?:求和
* 省略if的一种方式:boolean b=判断条件&&待执行语句>0
**/
public class P307_Accumulate {
public static int getSum(int num){
int t=0;
boolean b = (num>0)&&((t=num+getSum(num-1))>0);
return t;
}
public static void main(String[] args){
System.out.println(getSum(10));
}
}
运行结果
55