[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