递归入门

时间:2011-11-22 18:31:33

标签: python recursion

我需要编写一个函数,它是汇总数字1到n的递归版本。它需要是递归的,我不知道该怎么做,虽然我很容易做到了迭代版本。

我所知道的递归就是你在函数中调用函数。非常感谢任何关于从哪里开始的帮助。

这是我做过的迭代版本。

def summ(n):
    result = 0
    for i in range(1,n+1,1):
        result = result + i
    return result

3 个答案:

答案 0 :(得分:5)

与递归函数一样,定义基本案例和递归案例,然后在检查是否达到基本案例的函数中实现这些函数。这个问题有各种递归算法,其中之一是:

基本情况n==1。总和是微不足道的。

递归案例。如果您通过n获得了数字的总和,那么如何通过n+1获得总和?

答案 1 :(得分:2)

当函数为了计算自己的结果而使用修改的参数调用自身并在继续计算之前等待该函数调用返回时,会发生递归。然后,其他函数调用可能会再次使用其他已修改的参数调用自身,因此递归继续,直到它遇到函数不需要调用自身来计算其结果的情况,这种情况称为基本情况。对于从1到N的数字求和,基本情况显然可以是数字1.将它转换为代码,你会有类似的东西:

def addup(n):
  if n == 1:
    return 1
  else:
    new_n = # the new N which needs to be passed to the recursion
    return n+addup(new_n)

答案 2 :(得分:1)

我认为这个答案是有序的,使用基本情况为m == 1

def summ(m):
    if m==1:
        return 1
    else:
        return m+summ(m-1)