剑指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; }