剑指Offer 求1+2+3+...+n
题目描述:求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
解题步骤:
该题有许多限制:
(1)不能使用乘除法,所以无法采用等差序列求和
(2)不能使用for和while循环
(3)不能使用if和else,无法判断循环结束条件
所以常规的解题方法无法实现,我们可以采用递归的方式来进行计算,由于递归结束条件无法用 if 语句,所以我们采用短路与的形式来结束递归。
短路与:符号为 && ,通常用于执行逻辑运算,当&&左边式子为false的时候就不再进行右边计算。
基于短路与的特性,我们将短路与左边放循环结束条件 n > 0, 右边放递归执行语句,当n==0的时候,短路与左边为false,就会结束递归,返回值。
代码:
public int Sum_Solution(int n) {