不使用乘法除法循环递归做累加操作

来源:互联网 发布:传世田野源码 编辑:程序博客网 时间:2024/05/22 01:28
题目:求1+2+...+n,要求不能使用乘法除法、for、while、if、else、switch、case等关键字字及其条件判断语句。方法一:构造函数
class Temp{private:static unsigned int num;static unsigned int sum;public:Temp(){++num; sum += num;}static int getSum(){return sum;}static void reset(){num = 0; sum = 0;}};unsigned int Temp::num = 0;unsigned int Temp::sum = 0;
方法二:虚函数
struct A;A* arr[2];struct A{virtual int sum(int n){return 0;}};struct B : A{virtual int sum(int n){return arr[!!n]->sum(n - 1) + n;}};
方法三:函数指针
typedef int(*fun)(int);int s_teminator(int n){return 0;}int s_sum(int n){fun arr[2] = { s_teminator, s_sum };return arr[!!n](n - 1) + n;}
方法四:类模板
template <int n> struct solusion_sum{enum value{ N = solusion_sum<n - 1>::N + n };};template <> struct solusion_sum<1>{enum value{ N = 1 };};
0 0
原创粉丝点击