算法系列——求1+2+3+...+n

来源:互联网 发布:windows loader安全吗 编辑:程序博客网 时间:2024/05/16 23:41

题目描述

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

解题思路

可以利用pow()方法和移位运算

利用求和公式 (1+n)*n/2= (n²+n)>>1

利用递归和短路求值原理

int sum=n;
sum>0&&((sum+=sum(n-1))>0)

程序实现

pow()方法和移位运算

 public int Sum_Solution(int n) {       n=(int)(Math.pow(n,2)+n)>>1;       return n;    }

利用递归和短路求值原理

  public int Sum_Solution(int n) {      int sum=n;      boolean flag=(sum>0)&&((sum+=Sum_Solution(n-1))>0);      return sum;    }
原创粉丝点击