《剑指offer》求1+2+3+…+n

【 声明:版权所有,转载请标明出处,请勿用于商业用途。 联系信箱:libin493073668@sina.com】

题目链接:?rp=3&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

题目描述求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;}};2.构造函数

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();}};3.虚函数

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);}};

版权声明:本文为博主原创文章,如果转载,请注明出处

,终究还是会从指缝中一滴一滴流淌干净。

《剑指offer》求1+2+3+…+n

相关文章:

你感兴趣的文章:

标签云: