剑指offer 面试题64 求1+2+3+...+n

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

tips: 使用构造函数,保留类的静态变量存储sum值。

class Temp {
private:
    static int sum;
    static int n;
public:
    Temp() {
        ++n;
        sum+=n;
    }
    static void Reset() {
        n=0;
        sum=0;
    }
    static int getSum() {
        return sum;
    }
};

int Temp::n=0;
int Temp::sum=0;

class Solution {
public:
    int Sum_Solution(int n) {
        // n-=1;
        Temp::Reset();
        
        Temp* a=new Temp[n];
        delete []a;
        a=NULL;
        return Temp::getSum();
    }
};

tips: 利用逻辑与(&&)的短路求值原理作为终止条件。

class Solution {
public:
    int Sum_Solution(int n) {
        int ans = n;
        ans && (ans += Sum_Solution(n - 1));
        return ans;
    }
};
发布了83 篇原创文章 · 获赞 10 · 访问量 1万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览