网站添加验证码,WordPress食谱小程序,福州企业制作网站,网站模块图函数调用自己的编程方式被称为函数的递归调用。递归通常能够将一个大型的复杂问题的递归条件#xff0c;一层一层的回溯到终止条件#xff0c;然后再根据终止条件的运算结果#xff0c;一层一层的递进运算到满足全部的递归条件。它能够使用少量程序描述出解题过程中的重复运… 函数调用自己的编程方式被称为函数的递归调用。递归通常能够将一个大型的复杂问题的递归条件一层一层的回溯到终止条件然后再根据终止条件的运算结果一层一层的递进运算到满足全部的递归条件。它能够使用少量程序描述出解题过程中的重复运算部分减少程序的代码量。要使用递归的方式进行编程需要在编程的时候规划好终止条件写好递归条件用回溯的逻辑方法解决问题。
下面我们来举个例子
1.使用递归函数求斐波那契数列的前10个数
def fib(n):if n1 or n0:return 1else:return fib(n-2)fib(n-1)for n in range(10):print(fib(n),end\t)说明:斐波那契数列是一个常用的数学数列第n个斐波那契数fib(n)由以下两个条件决定:
1 n 0或n 1时 fib(0) 1fib(1) 1 2 n 1时 fib(n) fib(n-1) fib(n-2)
【代码分析】
1 第1行在定义一个名为fib的函数传递给这个函数的参数为n。
2 由题设斐波那契数列中n 0或n 1时fib(0) 与fib(1) 都等于 1我们把这个叫做终止条件。
3 第2、3行在程序中实现终止条件。终止条件一般都会给定一个或多个数值或实现某些特定操作。
4 由题设斐波那契数列中从第三个数开始第n个斐波那契数的数值是由公式fib(n) fib(n-1) fib(n-2)计算得到我们称这个是递归条件。
5 第5行在程序中实现了递归条件。
6 第7、8行使用循环传递0到9共10个数字进fib函数。 7 当n 0 和n 1时fib的返回值都为1。
8 当n 2时第3行不会运行会运行第5行。第5行中会调用fib(0)和fib(1)会执行fib(2) fib(0) fib(1)。
9 当n 3时第2行、第3行不会运行会运行第5行。第5行中会调用fib(1)和fib(2)会执行fib(3) fib(1) fib(2)。但是fib(2)此时会重复7中所描述的动作所以此时fib(3) fib(1) fib(2) fib(1) (fib(0) fib(1))。
10 当n 4时第2行、第3行不会运行会运行第5行。第5行中会调用fib(2)和fib(3)会执行fib(4) fib(2) fib(3)。但是fib(2)此时会重复7中所描述的动作fib(3)会重复8中所描述过程所以此时fib(4) fib(2) fib(3) (fib(0) fib(1)) (fib(1) fib(2)) (fib(0) fib(1)) (fib(1) (fib(0) fib(1)))。 每次n无法满足终止条件时fib(n)都会回溯到fib(n-1)和fib(n-2)只有当n满足了终止条件n 0和n 1时fib(n)才会返回一个确定值然后根据这个确定的值开始计算。简单的说递归函数会执行上述过程……、10、9、8直到7。
注意 当递归层数超过了系统允许的最大递归深度。默认情况下当递归调用到1000层Python解释器将终止程序。递归深度是为了防止无限递归错误而设计的当用户编写的正确递归程序需要超过1000层时可以通过如下代码设定 import syssys.setrecursionlimit(2000) #2000是新的递归层数