1题目描述:
求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
2.解题思路
本题本身没有太多的实际意义,但是可以对程序员的发散思维能力进行考察,进而可以反映出对编程相关技术理解的深度。
可以通过递归来实现加法,但是由于无法使用if语句,因此对于递归的结束条件无法进行判断,这里用一个比较巧妙的思路:与运算的短路特性,所谓短路,比如 A && B,当A条件不成立时,不论B是否成立,结果都是false,所以B不再进行计算,利用短路特性可以实现递归停止,进而求出和。
3.编程实现(Java):
public class Sum_Solution_30 {
public static void main(String[] args) {
System.out.println(Sum_Solution(5));
}
public static int Sum_Solution(int n) {
int sum =n;
//当n==0时,ans=false,函数就会返回,停止递归
boolean ans = (n > 0) && ((sum = sum + Sum_Solution(n - 1)) > 0);
return sum;
}
}