題目描述
求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)。
思路
- 首先沒了上面那些關鍵字你會發現,你不能循環了,是以你得想辦法循環,書上給的是構造函數,但是java預設構造函數不初始化,除非你手動,是以說就不行了
-
沒有if,你會發現遞歸的條件不能控制了,和for,while一樣,其實我們失去的就是控制邊界;那麼想法就是如何讓程式順利退出;
3.下面說三種方法,異常,&&短路運算符,次方運算
static public int Sum_Solution1(int n) {
try {
int i=%n; //遞歸到底,就會抛出異常
return n+Sum_Solution(n-);
}catch (Exception e)
{
return ;
}
}
//短路運算符,先算前面
static public int Sum_Solution(int n){
int i = n;
boolean flag = (n>) && (n+=Sum_Solution(n-))>;
return n;
}
//這個其實是公式(n*(n+1)/2)==(n*n+n)/2;不過左移運算符本來就是除法,是以。。。。。
static public int Sum_Solution2(int n)
{
return (int)(Math.pow(n,)+n)>>;
}
收獲
- 眼界大開啊,各種奇怪的想法;