1. 程式人生 > >[劍指Offer] 求1+2+3+...+n(Python)

[劍指Offer] 求1+2+3+...+n(Python)

題目描述

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

思路

思路一:Python語言特性
思路二:遞迴 + 邏輯與的短路特性代替if語句

程式碼

#思路一
# -*- coding:utf-8 -*-
class Solution:
    def Sum_Solution(self, n):
        # write code here
        return sum(list(range(1, 1 + n)))

#思路二
# -*- coding:utf-8 -*-
class Solution: def __init__(self): self.ans = 0 def Sum_Solution(self, n): self.recur(n) return self.ans def recur(self, n): self.ans += n n -= 1 return n > 0 and self.Sum_Solution(n)

時空複雜度

時間複雜度O(n),空間複雜度O(n)