剑指offer第二版-64.求1+2+...+n

本系列导航:剑指offer(第二版)java实现导航帖

面试题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

推荐阅读更多精彩内容