面试题64.求1+2+...+n

面试题64.求1+2+…+n

题目描述

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

示例 1:

输入: n = 3
输出: 6
示例 2:

输入: n = 9
输出: 45

限制:

1 <= n <= 10000

题解1

使用递归解题,代码如下:

class Solution {
    public int sumNums(int n) {
        int sum = n;
        boolean flag = (n>0)&&((sum+=sumNums(n-1))>0);
        return sum;
    }
}
提交结果1

在这里插入图片描述

题解2

使用等差数列的求和公式求解,和 = n(1+n)/2 = (n+n^2)/2,不能使用乘除法,但是除以2可使用位运算右移一位实现,代码如下:

class Solution {
    public int sumNums(int n) {
        return (int)(Math.pow(n,2)+n)>>1;
    }
}
提交结果2

在这里插入图片描述

你可能感兴趣的:(LeetCode解题)