• leetcode [面试题64. 求1+2+…+n]


    (https://leetcode-cn.com/problems/qiu-12n-lcof/)

    这题挺好玩的,猛的一看我真的没想起来怎么做,瞄了两眼题解明白了

    方法一:用递归代替迭代

    class Solution {
    public:
        int sumNums(int n) {
            if(n == 1) return 1;
            return sumNums(n-1)+n;
        }
    };
    

    方法二:快速乘+递归

    快速乘可以把乘法换成加法和位运算

    class Solution {
    public:
        int solve(int a,int b,int res){
            if(b == 0) return res;
            if(b & 1) res += a;
            return solve(a+a,b>>1,res);
        }
        int sumNums(int n) {
            int ans = solve(n,n+1,0);
            return ans>>1;
        }
    };
    

    总结:1:迭代可以用递归来代替。2:快速乘可以将乘法用加法和位运算来代替

    "没有天赋异禀,那就加倍努力"
  • 相关阅读:
    java例题 汽油检测
    java常用api
    二分搜索法
    java例题
    java基础
    表单验证
    4.10 pm例题
    0805
    0731 框架Mybatis
    小结
  • 原文地址:https://www.cnblogs.com/Beic233/p/13029412.html
Copyright © 2020-2023  润新知