首页 > 其他 > 详细

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

时间:2020-06-02 10:12:06      阅读:30      评论:0      收藏:0      [点我收藏+]

(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:快速乘可以将乘法用加法和位运算来代替

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

原文:https://www.cnblogs.com/Beic233/p/13029412.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!