剑指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\n",dfs(100));
    return 0;
}
posted @ 2014-09-06 15:15  啵啵那个臭  阅读(152)  评论(0编辑  收藏  举报