求1+2+3+…+n
求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
解题思路
这道题怎么也想不出来,看了答案。?????
首先能想到递归,但是递归需要终止条件。这里也不能用条件语句判断,用&&。&&具有短路特性,A&&B
- A为true,则返回B的布尔值
- A为false,则返回false
也就说说第一个条件语句为 false 的情况下不会去执行第二个条件语句。
function Sum_Solution(n)
{
return n&&n+Sum_Solution(n-1)
}
递归到最后执行
return 0&&0+Sum_Solution(-1) //0就是false,后面的就不会计算了,直接return0
在外层函数中
return 1&&1+Sum_Solution(0)=1&&1 //前面的1就是true,根据短路特性,返回的是1+Sum_Solution(0)的值
后面都以此类推了。