LeetCode面試題64 求1 2 n

2021-10-04 03:22:21 字數 697 閱讀 8336

在拿到題目後,我首先想到的就是遞迴,但問題出在如何處理遞迴過程中的中斷條件,在無法使用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 這個...