JZ47 求1+2+3+...+n****

题目描述

求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。

这道题考的是发散思维

除了用公式(n+1)*n/2,无外乎循环和递归两种思路。由于已经明确限制for和while的使用,循环已经不能再用了。递归函数也需要用if语句或者条件判断语句来判断是继续递归下去还是终止递归,但题目不允许使用这两种语句了

剑指offer上给了四种方法
(1)构造函数
【围绕循环做文章】先定义一个类型,接着创建n个该类型的实例,那么这个类型的构造函数将确定会被调用n次;我们可以将与累加相关的代码放到构造函数里

(2)虚函数
【围绕递归做文章】定义两个函数,一个函数充当递归函数的角色,另一个函数处理终止递归的情况;需要在两个函数里二选一(很容易想到布尔变量,比如true(1)的时候调用第一个函数)

如果感兴趣再看吧,太复杂了!

全部评论

相关推荐

一个菜鸡罢了:哥们,感觉你的简历还是有点问题的,我提几点建议,看看能不能提供一点帮助 1. ”新余学院“别加粗,课程不清楚是否有必要写,感觉版面不如拿来写一下做过的事情,教育经历是你的弱势就尽量少写 2. “干部及社团经历”和“自我评价”删掉 3. 论文后面的“录用”和“小修”啥的都删掉,默认全录用,问了再说,反正小修毕业前肯定能发出来 4. 工作经验和研究成果没有体现你的个人贡献,着重包装一下个人贡献
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务