创新路
我们一直在努力

python递归

1、递归方程,即递归调用的方法

递归通俗的说就是在函数内部自己调用自己,如何调用就是递归方程。

以以下的sum(n)求和函数递归实现方式为例,递归调用方式就是返回n+sum(n-1),这样sum(n)的计算方式就类似如下:

sum(n)=n+sum(n-1) #递归方程,以下为其展开

sum(n)=n+(n-1)+sum(n-2)

sum(n)=n+(n-1)+(n-2)+…+sum(1)

到这里递归循环就应该结束了,很自然的我们得到了递归循环的结束条件:n=0,此时的返回就不是0+sum(-1)了,直接返回0结束循环即可。

2、终止条件,即从哪里开始和结束

从哪里开始和结束要分情况,在上例中有明确的结束条件n=0,n>0则进入递归循环,其隐形的条件就是n不能小于0,因此其开始条件写个n>0即可。

而其他场景例如遍历B树这种,开始一定是根节点,结束时一定是叶子结点,那么只要开始处理下根节点的打印,之后递归循环子节点即可,因此初始返回值就是根节点相关,之后递归调用以便遍历子节点和后代节点们,终止条件就是找不到子节点。

二、递归函数示例:

#!/usr/bin/env python

def sum(list):

    sum = 0

    # Add every number in the list.

    for i in range(0, len(list)):

        sum = sum + list[i]    

    # Return the sum.

    return sum

print(sum([5,7,3,8,10]))

#!/usr/bin/env python

def sum(list):

   if len(list) == 1:

        return list[0]

   else:

        return list[0] + sum(list[1:])

print(sum([5,7,3,8,10]))

以上两个函数,第一个使用普通循环方式求和,第二个使用递归循环的方式求和,从效率来讲第一个更好,从逻辑上来讲递归函数更加清晰简洁。

未经允许不得转载:天府数据港官方信息博客 » python递归

客官点个赞呗! (0)
分享到:

评论 抢沙发

评论前必须登录!

天府云博 - 做有态度的开发&运维&设计学习分享平台!

联系我们百度云主机