LeetcodeMedium-【面試題64. 求1+2+…+n】

求 1+2+…+n ,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)。

示例 1:
輸入: n = 3
輸出: 6

示例 2:
輸入: n = 9
輸出: 45

限制:
1 <= n <= 10000

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/qiu-12n-lcof
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。

思路1:遞歸

既然那麼多不能用,我能想到的就剩遞歸了,但是遞歸的終止條件怎麼辦,又不能用if判斷。於是看了題解發現可以利用邏輯判斷中的斷路來操作。
在這裏插入圖片描述

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
class Solution:
    def sumNums(self, n: int) -> int:
        def dfs(n):
            return n and n+dfs(n-1)
        return dfs(n)

#if(A && B)  // 若 A 爲 false ,則 B 的判斷不會執行(即短路),直接判定 A && B 爲 false

#if(A || B) // 若 A 爲 true ,則 B 的判斷不會執行(即短路),直接判定 A || B 爲 true



作者:liangqi
鏈接:https://leetcode-cn.com/problems/qiu-12n-lcof/solution/mian-shi-ti-64-qiu-12n-di-gui-by-liangqi/
來源:力扣(LeetCode)
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章