【 声明:版权所有,转载请标明出处,请勿用于商业用途。 联系信箱:libin493073668@sina.com】
题目描述
求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
思路
这道题初看起来貌似并想不到什么太好的方法,但是如果我们熟悉C++的特性,或者对递归比较了解的话,还是能找到一些解决的方法
1.使用递归
class Solution { public: int Sum_Solution(int n) { int sum = n; bool flag = (n>0) && ((sum+=Sum_Solution(n-1))>0); return sum; } };
class Temp { public: Temp() { ++N; Sum+=N; } static void Reset() { N = Sum = 0; } static int GetSum() { return Sum; } private: static int N; static int Sum; }; int Temp::N = 0; int Temp::Sum = 0; class Solution { public: int Sum_Solution(int n) { Temp::Reset(); Temp *a = new Temp[n]; delete []a; a = NULL; return Temp::GetSum(); } };
class A; A* Array[2]; class A { public: virtual int Sum(int n) { return 0; } }; class B:public A { public: virtual int Sum(int n) { return Array[!!n]->Sum(n-1)+n; } }; class Solution { public: int Sum_Solution(int n) { A a; B b; Array[0] = &a; Array[1] = &b; return Array[1]->Sum(n); } };
版权声明:本文为博主原创文章,如果转载,请注明出处
原文:http://blog.csdn.net/libin1105/article/details/48413173