题目:求1+2+3...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句
题解分析:
不能使用乘除法,也就不能使用 n(n+1)/ 2公式了
不能使用for while 也就不能使用循环之类的
利用构造函数求解:
循环只是让相同代码重复执行n遍,我们可以定义一个类型,然后创建n个该类型的实例,这时类的构造函数一定会重复执行n次,
我们在类的构造函数中进行n次累加
注意:参与累加的成员变量应为static,因为是每个类独属一份,而不是每个实例
class Temp { public: Temp() { sum += i; ++i; } static int GetSum() { return sum; } private: static int sum; static int i; }; int Temp::sum = 0; int Temp::i = 1; int Sum(int n) { Temp* a = new Temp[n]; int result = Temp::GetSum(); delete []a; a = NULL; return result; }
剑指offer (46) 求1+2+3+...+n
时间: 2024-09-26 20:09:56