剑指offer系列之四十六:求1到n的和
2015-12-15 14:12
183 查看
题目描述
求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
如果不能使用上面的操作,那么只能使用递归操作了。使用递归操作的思路是让函数不断调用自己,每调用一次值就减少1,这样完成了递归操作。还有一个问题是如何实现n范围的判断呢?注意到递归调用的n的值最小是1,所以可以通过逻辑与运算,判断是否递归到1。如果递归调用到1,那么递归就结束,并返回最后的结果。下面是这样思路的实现代码(已被牛客AC):
求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
如果不能使用上面的操作,那么只能使用递归操作了。使用递归操作的思路是让函数不断调用自己,每调用一次值就减少1,这样完成了递归操作。还有一个问题是如何实现n范围的判断呢?注意到递归调用的n的值最小是1,所以可以通过逻辑与运算,判断是否递归到1。如果递归调用到1,那么递归就结束,并返回最后的结果。下面是这样思路的实现代码(已被牛客AC):
package com.rhwayfun.offer; public class SumOfN { private int result = 0; public int Sum_Solution(int n) { calc(n); return result; } private boolean calc(int n) { result += n; return n != 0 && calc(n - 1); } public static void main(String[] args) { int res = new SumOfN().Sum_Solution(10); System.out.println(res); } }
相关文章推荐
- CSS优化
- HTML-圣杯布局
- JavaScript如何获取网页url中的参数
- Js Javascript 获取Get参数
- angularjs $broadcast $emit $on 事件触发controller间的值传递
- HTML性能优化
- 在CSS中 .td{} #td{} td{} 区别
- ListView子布局样式有多个的处理
- Angular2组件开发—为模板应用样式(三)
- CSS 之rem
- seajs 路径解析过程
- $.merge()——JQuery
- HTML5定稿一周年,你必须要重新认识HTML5了
- javascript深入理解js闭包
- JQuery 常用小技巧
- js中将字符串转换成json的三种方式
- js变量及其作用域
- c#使用XSLT将xml文档转换为html文档
- [ExtJS5学习笔记]第三十五条 sencha extjs 5 组件查询方法
- JSON写、读文件