剑指offer-求1+2+3+…+n

来源:互联网 发布:keeper是什么软件 编辑:程序博客网 时间:2024/04/20 09:01

题目描述

求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。

简单思路:

if (n == 1) {            return 1;        } else {            return Sum_Solution(n - 1) + n;        }

这样有一个问题,不能使用if

改进:

public int Sum_Solution(int n) {        int sum=0;//总数        boolean flag = false; //设置标记        int a=3; //设置一个值,可以为任意值,知识为了boolean算数逻辑需要        /*n!=0:当n=0,直接短路;n!=0,可以递归计算右边的        sum=Sum_Solution(n-1)将递归计算的结果赋给sum        a==是为了将赋值转化为boolean值,一遍复合逻辑*/        flag=(n!=0)&&(a==(sum=Sum_Solution(n-1)));        return sum+n;    }
0 0
原创粉丝点击