059 递归函数

一、什么是递归函数

所谓递归函数。它的本质依然是函数。不过加了递归二字,将函数递归调用。

递:递推,归:回归,回溯。

记住:无论什么的样的递归函数,它一定是满足递推,和回溯两个条件。递归函数从根本上来说更多的是一种思想

二、函数的递归调用

递归函数,它是一种特殊的嵌套调用,但是它在调用一个函数的过程中,又直接或间接地调用了它自身。另外,递归函数一定要设置终止调用的条件,使得函数的执行次数是有穷的。而不是死循环下去,这是非常关键的。

递归必须要有两个明确的阶段:

  1. 递推:一层一层递归调用下去,进入下一层递归的问题规模都将会减小
  2. 回溯:递归必须要有一个明确的结束条件,在满足该条件开始一层一层回溯。

递归的精髓在于通过不断地重复逼近一个最终的结果。

例:使用函数递归的方式编写一个求和函数。

def sun(num):	# 求和函数
    if num > 1:
        return num + sun(num-1)
    else:
        return num
print(sun(100))

分析:上述的递归求和函数,是函数递归思想中非常常见的例子。也是比较容易理解函数递归思想的例子。

首先。通过if num > 1作为递归终止的条件。
当满足条件时:函数会在return之前。不断地递推执行sun(num-1)不断地去减小值,缩小规模。
当不满足条件时:函数会开始回溯。首先执行else并将结果num值,返回给上层递归调用的函数中sun(num-1),此时函数已经在不断地回溯。而每次回溯的结果都将是num + sun(num-1)计算的结果进行返回给上层函数,直到回溯完毕。

结论:因此,我们可以看出递归函数也是非常占用内存资源的。因为每一次调用,Python解释器都需要为该函数创建内存空间,而递归的规模越大,内存占用越多,对计算机性能也就有了考验。所以,递归函数一定要设置终止条件。要让函数有穷别让程序把你的内存吃完。

总结

综上所述,函数递归除了是一直方式。更多的是一种编程的思想。不断地去逼近结果,满足条件。

说了半天。就一句话。递归函数一定要合理的设置终止条件,因为没有终止条件的死递归是非常恐怖的。

原文地址:https://www.cnblogs.com/XuChengNotes/p/11351964.html