美文网首页数据结构与算法
剑指 Offer 64 求1+2+…+n

剑指 Offer 64 求1+2+…+n

作者: itbird01 | 来源:发表于2021-12-22 07:16 被阅读0次

剑指 Offer 64. 求1+2+…+n

解题思路

解法1:
1.分析题意,我们知道 1+2+...+n实际等于n(n+1)/2
2.题中要求不可以使用乘除,所以我们想到转换,除以2其实也可以用向右移一位操作
3,.n
(n+1)=pow(n,2)+n
解法2:
1.题目要求不可以使用for,但是可以转换使用递归
2.不可以使用if判断,则加入&&判断

解题遇到的问题

后续需要总结学习的知识点

递归需要深入学习总结一下

##解法1
class Solution {
    // 要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)
    public int sumNums(int n) {
        // 分析题意,我们知道 1+2+...+n实际等于n*(n+1)/2
        // 题中要求不可以使用乘除,所以我们想到转换,除以2其实也可以用向右移一位操作
        // n*(n+1)=n*n+n,不可以用for,所以可以换成递归操作
        return (int) (Math.pow(n, 2) + n) >> 1;
    }
}

##解法2
class Solution {
    // 要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)
    public int sumNums(int n) {
        int sum = n;
        // 不可以使用if判断,则加入&&判断
        // 题目要求不可以使用for,但是可以转换使用递归
        boolean isFlag = n > 0 && (sum = sum + sumNums(n - 1)) > 0;
        return sum;
    }
}

相关文章

网友评论

    本文标题:剑指 Offer 64 求1+2+…+n

    本文链接:https://www.haomeiwen.com/subject/npwhzltx.html