參考:
求1+2+...+n
,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(a?b:c)。
示例 1:
輸入: n = 3
輸出: 6
示例 2:
輸入: n = 9
輸出: 45
限制:
解題思路1:
使用邏輯運算表示式模擬判斷條件,然後進行遞迴運算
class solution
}
解題思路2:
計算 1+2+...+n 的求和公式為n * ( n + 1) / 2
,因此可以使用下列的俄羅斯乘法模擬兩數相乘,的到的最終值進行右移運算即可。
/**
* 俄羅斯乘法:計算35 * 72
* 35 72
* 17 144 35 >> 1 72 << 1
* 8 288 17 >> 1 144 << 1
* 4 576 8 >> 1 288 << 1
* 2 1152 ...
* 1 2304
* * 從上到下,對每一行,若左邊的數字若為奇數,則將右邊的數字取出,累加。
* 72+144+2304=2520
* 累加的結果2520即為乘積。
*/public static int quickmulti(int a, int b)
a <<= 1;
}return ans;
}class solution
}
面試題64 求1 2 n的值
求1 2 3 n,要求不能使用乘除法 for while if else switch case等關鍵字及條件判斷語句 a?b c 考察點 類的基礎知識和概念 發散思維。方法1 利用虛函式求解。定義兩個函式,乙個充當遞迴函式,乙個充當終止遞迴的情況。二選一的話用布林變數。true 1 呼叫第乙個,f...
求1 2 n 很多限制條件
題目 求1 2 n,要求不能使用乘除法 for while if else switch case等關鍵字以及條件判斷語句 a?b c 分析 這道題沒有多少實際意義,因為在軟體開發中不會有這麼 的限制。但這道題卻能有效地考查發散思維能力,而發散思維能力能反映出對程式設計相關技術理解的深刻程度。通常求...
微軟100題 求1 2 n
題目 求1 2 n,要求不能使用乘除法 for while if else switch case等關鍵字以及條件判斷語句 a?b c package test 題目 求1 2 n,要求不能使用乘除法,for,while,if,else,switch,case,條件判斷語句 a?b c author...