[Python]: 求 1+2+...+n 。


求 1+2+...+n ,要求不能使用乘除法、for、while、if、else等關鍵字及條件判斷語句
示例
1:
輸入: n = 3
輸出: 6
示例
2:
輸入: n = 9
輸出: 45

限制:
1 <= n <= 10000)
  • 在網上搜了半天,就是沒搜到Python版本的, 經過小伙伴的講解, 瞬間感覺通透了好多, 以下是這道題的兩種方法.
  • 其一
n = 9                       # 輸入的要計算的個數
a = sum(list(range(1, n+1)))# range(1, n+1): range出一列數 [1, 2, 3, ..., n]
                            # list(range(1, n+1)) : 將其轉換為一個列表
                            # sum(list(range(1, n+1)))  : 來來來, 最神奇的一步來了,
                            # sun() 函數竟然可以對一個列表求和, 是不是很神奇.....
                            # 直接求和打印就好了.
print(a)

  • 其二
def msum(n):                        # 定義一個函數, 運用遞歸 and 的特殊性求和
    res = n and  (n + msum(n - 1))  # and 的特殊性: a and b , and 從前往后判斷, 直到兩個都為真,則返回后一個數, 也就是 b .
    return res                      # 若前一個數為假, 即 a 為假, 則直接返回前一個數, 后一個數就不判斷了.
print(msum(9))                      # 若前為真, 后為假, 即 a 真 b 假, 則判斷到b 時, 將b 返回. 
                                    # 若 n = 9 
                                    # 9 and (9 + msum(8))       根據and 特點
                                    # ==> 9 + 8 + msum(7)
                                    # ==> 9 + 8 + 7 + msum(6)
                                    # .......
                                    # 9+8+7+.....+0     直接返回, 即求和完成.

  • 理解了的話還是蠻簡單的哈.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM