题目:求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
方法(1):利用两个静态成员变量,调用n次构造函数
class SUM { private: static int i; static int sum; public: //构造函数 SUM() { i++; sum+=i; } static void Set() { i=0; sum=0; } //获取sum static int GetSum() { return sum; } }; //静态成员变量的初始化 int SUM::i=0; int SUM::sum=0; class Solution { public: int Sum_Solution(int n) { SUM::Set();//每次重置一下变量i和sum,否则多次测试每次都会累积 SUM* ptr = new SUM[n];//调用n次构造函数 int ret=SUM::GetSum(); return ret; } };方法(2):巧用条件判断的递归法
int Sum_Solution(int n) { int ans = n; ans && (ans += Sum_Solution(n - 1)); return ans; }