LeetCode 面試題64. 求1+2+…+n | Python

面試題64. 求1+2+…+n


題目來源:力扣(LeetCode)https://leetcode-cn.com/problems/qiu-12n-lcof

題目


求 1+2+...+n ,要求不能使用乘除法蔫饰、for、while浊伙、if频伤、else原杂、switch弥喉、case等關(guān)鍵字及條件判斷語句(A?B:C)允青。

示例 1:

輸入: n = 3
輸出: 6

示例 2:

輸入: n = 9
輸出: 45

限制:

  • 1 <= n <= 10000

解題思路


在這道題目中,有許多的條件限制蒋得。我們先來看能夠使用哪些辦法來解決级及?例如:等差數(shù)列求和,迭代额衙,遞歸

等差數(shù)列求和

先看等差數(shù)列求和创千,這里直接將公式套上就可以,直接看代碼:

class Solution:
    def sumNums(self, n: int) -> int:
        return (1 + n) * n / 2

但是這里有個問題入偷,這里使用了乘法和除法,先將這個辦法排除械哟。

迭代

使用迭代的話疏之,要么使用 while 語句,要么使用 for 語句暇咆,這里同樣被題目所限制锋爪,所以同樣不可取。這里同樣將代碼貼出來爸业,但是不采納其骄,僅閱讀即可。

class Solution:
    def sumNums(self, n: int) -> int:
        ans = 0
        for i in range(1, n + 1):
            ans += i
        return ans
遞歸

正常來說扯旷,我們使用遞歸的方法都需要先設(shè)定終止條件拯爽,這里一定會用到條件語句 if,那這樣钧忽,同樣不符合題意毯炮。不過先看下如何實現(xiàn):

class Solution:
    def sumNums(self, n: int) -> int:
        if n == 1:
            return 1
        n += sumNums(n-1)
        return n

我們知道,邏輯運算符有個短路性質(zhì)耸黑。假設(shè)有條件 a桃煎、b,有這樣的性質(zhì)大刊,對于表達式 a and b为迈,如果 a 是 False 的話,那么 a and b,一定也是 False葫辐,所以不會去執(zhí)行 b搜锰。

對于 a or b 這個表達式,如果 a 是 True另患,那么 a or b 也就能確定結(jié)果是 True纽乱,所以不會執(zhí)行 b。

現(xiàn)在使用這個短路的性質(zhì)昆箕,嘗試修改遞歸方法的代碼部分(使用 and 或者 or 都可以)鸦列。

具體代碼如下。

代碼實現(xiàn)


# code 1
class Solution:
    def __init__(self):
        self.ans = 0
    def sumNums(self, n: int) -> int:
        n == 1 or self.sumNums(n-1)
        self.ans += n
        return self.ans


# code 2
class Solution:
    def __init__(self):
        self.ans = 0
    def sumNums(self, n: int) -> int:
        n > 1 and self.sumNums(n-1)
        self.ans += n
        return self.ans

實現(xiàn)結(jié)果


實現(xiàn)結(jié)果

總結(jié)


  • 先羅列可以解決該問題的一些方法鹏倘,例如:等差數(shù)列求和薯嗤,迭代,遞歸纤泵;
  • 使用這些方法解決問題的同時骆姐,查看是否符合題意,不符合的剔除捏题;
  • 遞歸的終止條件玻褪,一般情況下都會使用 if 條件進行判斷,這里使用邏輯運算符的短路性質(zhì)公荧,替代 if 語句去確定遞歸的終止條件带射,進而解決此問題。

以上就是本篇幅的主要內(nèi)容循狰,若您覺得文章可以窟社,歡迎關(guān)注。公眾號《書所集錄》同步更新绪钥,同樣歡迎關(guān)注灿里。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市程腹,隨后出現(xiàn)的幾起案子匣吊,更是在濱河造成了極大的恐慌,老刑警劉巖寸潦,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件缀去,死亡現(xiàn)場離奇詭異,居然都是意外死亡甸祭,警方通過查閱死者的電腦和手機缕碎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來池户,“玉大人咏雌,你說我怎么就攤上這事凡怎。” “怎么了赊抖?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵统倒,是天一觀的道長。 經(jīng)常有香客問我氛雪,道長房匆,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任报亩,我火速辦了婚禮浴鸿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘弦追。我一直安慰自己岳链,他們只是感情好,可當我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布劲件。 她就那樣靜靜地躺著掸哑,像睡著了一般。 火紅的嫁衣襯著肌膚如雪零远。 梳的紋絲不亂的頭發(fā)上苗分,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天,我揣著相機與錄音牵辣,去河邊找鬼俭嘁。 笑死,一個胖子當著我的面吹牛服猪,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播拐云,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼罢猪,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了叉瘩?” 一聲冷哼從身側(cè)響起膳帕,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎薇缅,沒想到半個月后危彩,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡泳桦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年汤徽,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片灸撰。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡谒府,死狀恐怖拼坎,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情完疫,我是刑警寧澤泰鸡,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站壳鹤,受9級特大地震影響盛龄,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜芳誓,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一余舶、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧兆沙,春花似錦欧芽、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至库正,卻和暖如春曲楚,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背褥符。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工龙誊, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人喷楣。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓趟大,卻偏偏與公主長得像,于是被迫代替她去往敵國和親铣焊。 傳聞我的和親對象是個殘疾皇子逊朽,可洞房花燭夜當晚...
    茶點故事閱讀 42,802評論 2 345