求1+2+...+n 【微软面试100题 第十二题】 - tractorman - 博客园
方法一:利用构造函数和静态数据成员
利用&&的短路特性
int nFactorial(int n)2{
3 int num = 0;
4 (n > 0) && (num = n + nFactorial(n - 1));
5
6 return num;
7}
Read full article from 求1+2+...+n 【微软面试100题 第十二题】 - tractorman - 博客园
求1+2+...+n 【微软面试100题 第十二题】
题目要求:
要求不能使用乘除法,for/while/if/else/switch/case等关键字以及条件判断语句(A?B:C)。
参考资料:剑指offer第46题
题目分析:
方法1:利用类的静态成员变量,定义一次之后该类的所有对象都共享该静态成员变量。再利用构造函数实现n次递加即可;
方法2:利用函数指针;
方法3:利用虚函数和动态联编(虚函数和动态联编介绍:http://blog.csdn.net/qlping2007/article/details/2177880).
http://www.cnblogs.com/lzmfywz/archive/2013/04/22/3036370.html要求不能使用乘除法,for/while/if/else/switch/case等关键字以及条件判断语句(A?B:C)。
参考资料:剑指offer第46题
题目分析:
方法1:利用类的静态成员变量,定义一次之后该类的所有对象都共享该静态成员变量。再利用构造函数实现n次递加即可;
方法2:利用函数指针;
方法3:利用虚函数和动态联编(虚函数和动态联编介绍:http://blog.csdn.net/qlping2007/article/details/2177880).
方法一:利用构造函数和静态数据成员
- class Temp
- {
- public:
- Temp()
- {
- ++N;
- Sum+=N;
- }
- static void Reset()
- {
- N=0;
- Sum=0;
- }
- static int GetSum()
- {
- return Sum;
- }
- private:
- static int N;
- static int Sum;
- };
- int Temp::N=0;
- int Temp::Sum=0;
- int solution_Sum(int n)
- {
- Temp::Reset();
- Temp *a=new Temp[n];
- delete []a;
- a=0;
- return Temp::GetSum();
- }
利用&&的短路特性
- int add_fun(int n, int &sum)
- {
- n && add_fun(n-1, sum);
- return (sum+=n);
- }
3 int num = 0;
4 (n > 0) && (num = n + nFactorial(n - 1));
5
6 return num;
7}
Read full article from 求1+2+...+n 【微软面试100题 第十二题】 - tractorman - 博客园