剑指offer——求1+2+...+n

方法一、通过在类的构造函数中执行加的过程。

#include <iostream>
using namespace std;
class Base
{
public:
    Base(){n++;sum+=n;}
    static int GetSum(){return sum;}
private:
    static unsigned int n;
    static unsigned int sum;
};
unsigned int Base::n=0;
unsigned int Base::sum=0;
int main()
{
    Base *b=new Base[100];
    cout<<Base::GetSum()<<endl;
    return 1;
}

方法二、利用题目的特殊性。其实还是可以递归的。&&有短路的作用,在n减为0的时候停止递归。

#include <stdio.h>

int dfs(int n)
{
    int s=0;
    n&&(s=n+dfs(n-1));
    return s;
}

int main()
{
    printf("%d
",dfs(100));
    return 0;
}
原文地址:https://www.cnblogs.com/dgy5554/p/3973388.html