JZ47 求1+2+3+...+n
原题链接
描述
求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
示例
输入:5
返回值:15
思路
题目本身简单,但是加上限制条件就不好做了。不用for、whille,只有递归解决了,但是 if 也不能用,递归的返回条件就不能实现了。这时候用到&&
,它和&
的区别就是多了一个短路的功能,这样就可以用ConditionA && ConditionB
代替if(ConditionA) {ConditionB}
的操作了。
解答
public class Solution {
public int Sum_Solution(int n) {
boolean tmp = n > 1 && (n += Sum_Solution(n - 1)) > 0;
return n;
}
}
/**********递归版本,用于参考*************/
public int Sum_Solution(int n) {
if (n == 1) return n;
return n + Sum_Solution(n - 1);
}
本文来自博客园,作者:klaus08,转载请注明原文链接:https://www.cnblogs.com/klaus08/p/15174051.html