【问题标题】:How can I implement a summatory with a cycle and recurssion如何使用循环和递归实现摘要
【发布时间】:2016-06-04 21:53:47
【问题描述】:

如果我有这个功能

def P(n):
    iterador = 0
    while ( iterador <= n ):
        print(iterador)
        iterador = iterador + 1
P(8)

打印出来的

1
2
3
4
5
6
7
8

为了添加每个数字,我需要做什么,就像这样

1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 = 36

我知道会是这样的:

P(n) = 1 + 2 + 3 +...+ n

P(1) = 1
P(2) = P(1) + 2
P(3) = P(2) + 3
.
.
.

P(n) = P(n-1) + n

但我不知道如何将其放入代码中。

谁能帮帮我。

谢谢。

【问题讨论】:

    标签: python recursion add cycle


    【解决方案1】:

    递归的第一步是使用递归。这意味着该函数必须在某处调用自身。使用递归的下一步是停止递归。这意味着为函数提供一种在返回结果时停止调用自身的方法。对于此函数,您需要从给定的数字开始,然后将其添加到数字 1,然后将其添加到较小的数字 1,依此类推,直到达到 0。

    def adder(n):
        if n:
            return n + adder(n-1)
        return n
    

    如果我们将值 8 传递给它,那么 if n: 为真,我们将运行该块。这意味着我们将返回8 加上adder(n-1) 的值,即adder(7)。返回7 加上adder(6),以此类推。当n0 时,它只会返回它。这意味着我们有n + adder(n-1) + adder(n-2)... 0,这是我们正在寻找的算法。

    【讨论】:

      【解决方案2】:

      好的,谢谢大家的帮助。我应用了上述,这是结果:

      def P(n):
          if ( (n == 0) ):
              resultado = 0
          if ( ( n==1 ) ):
              resultado = 1
          if ( (n>1) ):
              resultado = P(n-1) + n
          return resultado
      
      def Q(n):
          resultado = ( n*(n+1) // 2)
          return resultado
      
      def F(n):
          serie = []
          for x in range ( 0, n + 1 ):
              serie.append(x)
          print(serie)
      
      n = 8
      print(P(n))
      print(Q(n))
      F(n)
      

      【讨论】:

        猜你喜欢
        • 2021-07-20
        • 2014-10-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-22
        • 1970-01-01
        • 1970-01-01
        • 2020-07-21
        相关资源
        最近更新 更多