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)的时候调用第一个函数)

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

全部评论

相关推荐

下个早班:秒挂就是不缺人
点赞 评论 收藏
分享
05-26 10:24
门头沟学院 Java
qq乃乃好喝到咩噗茶:其实是对的,线上面试容易被人当野怪刷了
找工作时遇到的神仙HR
点赞 评论 收藏
分享
07-01 17:14
中北大学 Java
兄弟们是真是假
牛客46374834...:我在boss上投java岗从来没成功过
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务