首页 > 代码库 > 剑指offer (46) 求1+2+3+...+n
剑指offer (46) 求1+2+3+...+n
题目:求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;}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。