美文网首页数据结构与算法
剑指 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