在拿到題目後,我首先想到的就是遞迴,但問題出在如何處理遞迴過程中的中斷條件,在無法使用if()、else()的情況下,採用邏輯表示式**&&運算子**來做。
&&運算子:
&&運算子左邊的結果和右邊的結果同時為真時,結果真
&&運算子左邊的結果和右邊的結果同時為假時,結果為假
&&運算子左邊的結果和右邊的結果有乙個為假時,結果為假
&&運算的順序為:先左後右
class solution }
有等差數列的前n相和得到:
sn=n(n+1)/2
移位運算子:
<< : 左移運算子,num << 1,相當於num乘以2,表示加0。
>> : 右移運算子,num >> 1,相當於num除以2,表示抹0。
乘方運算子:
a**n相當於a的n次方。
優先順序比 * 高一級。
所以sn=n(n+1)/2=(n**2+n)>>1
// python**
class solution(object):
def sumnums(self, n):
return ((n**2+n)>>1)
在不使用if的情況下可以使用邏輯運算子來實現遞迴。 LeetCode 面試題64 求1 2 n
求 1 2 n 要求不能使用乘除法 for while if else switch case等關鍵字及條件判斷語句 a?b c 示例 1 輸入 n 3 輸出 6示例 2 輸入 n 9 輸出 45限制 思路解析 對於a b,若a為真b才會執行,a為假則b連執行的機會都沒有,所以a部分可以作為遞迴的終...
面試題64 求1 2 n
求1 2 n,要求不能使用乘除法 for while if else switch case等關鍵字及條件判斷語句 a?b c 利用 和 的短路規則,形成if的效果,再用遞迴形成迴圈的效果,實現求和。觀察求和公式 package com.wsy public class main public st...
面試題64 求1 2 n
面試題64 求1 2 3 n,要求不能使用乘除法 for while if else switch case等關鍵字及條件判斷語句 a?b c a b a 為 true,則返回表示式 b 的 bool 值 a 為 false,則返回 false class solution a 這個是宣告。a 這個...