题目描述
求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
分析
此题目目的是为了考采用取巧的方法,总共可以使用三种方法: 虚函数,
代码实现
class MyClass{ public: MyClass(){ sum += n; n++; } static void init(){ sum = 0; n = 1; } static int getNum(){ return sum; } private: static int sum; static int n; }; int MyClass::sum = 0; int MyClass::n = 1; class Base{ public: Base(){ } virtual int add(){ } private: }; class Derive:Base{ public: Derive(){ } virtual int private: }; // class Solution { public: ///构造函数版本 int Sum_Solution1(int n) { MyClass::init(); MyClass*h = new MyClass[n]; int res = h[0].getNum(); return res; } ///中断条件版本 int Sum_Solution2(int n) { int res = n; res && (res+=Sum_Solution(n-1)); return res; } ///虚函数版本 int Sum_Solution3(int n) { int res = n; res && (res+=Sum_Solution(n-1)); return res; } };