本文主要是介绍剑指offer系列之四十六:求1到n的和,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述
求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);}
}
这篇关于剑指offer系列之四十六:求1到n的和的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!