Python3中的递归函数

目录

1:递归函数

2:递归函数的最大深度

3:重置递归函数的最大深度

4递归函数示例

4.1 计算阶乘 n! 

4.2:斐波纳契数列

4.3:求x的n次方


1:递归函数

递归函数就是在函数中调用它自身,其主要用于将复杂问题分解为多个子问题,然后再对子问题进行拆分,分解成更小的问题,直到不能再拆分为止。

为了防止递归函数无休止地进行,必须在函数内有终止条件。

2:递归函数的最大深度

在Python中递归函数的最大深度是997

def func(n):
    print(n)
    n += 1
    func(n)
func(1)

3:重置递归函数的最大深度

import sys

print(sys.setrecursionlimit(2000))

def func(n):
    print(n)
    n += 1
    func(n)
func(1)

4递归函数示例

4.1 计算阶乘 n! 

'''
分析:
n! = 1*2*3*4*....(n-2)*(n-1)*n
我们使用函数 fact(n) 来表示n! ,即 fact(n) = n!

n!     = 1*2*3*4*....(n-2)*(n-1)*n  = fact(n)
(n-1)! = 1*2*3*4*....(n-2)*(n-1)    = fact(n-1)

可以推导出:
n! = fact(n-1) * n

同理,fact(n-1) = fact(n-2)*(n-1)
......

直到 n=1 即 1! = 1 的时候不再进行分解;

'''

def fact(n):
	if n == 1:
		return 1
	return n*fact(n-1)

print(fact(5))   # 120

'''
5! 执行过程如下:
5*fact(4)
5*(4*fact(3))
5*(4*(3*fact(2)))
5*(4*(3*(2*fact(1))))
5*(4*(3*(2*1)))

'''

4.2:斐波纳契数列

斐波纳契数列:1,1,2,3,5,8,13......(该数列中,有n个数字,从第三个数字开始:数值 =前第一个数字 + 前面第二个数字)即:n=(n-2)+(n-1)

# 1,1,2,3,5,8,13,21,34,55,......
def Fibonacci(n):
	if n== 1 or n == 2:
		return 1
	else:
		return Fibonacci(n-1) + Fibonacci(n-2)

print(Fibonacci(9))

4.3:求x的n次方

# 求x的n次方(n大于等于0),即n个x相乘
def func(x,n):
	if n == 0:
		return 1
	else:
		return func(x,n-1) * x

print(func(3,10))

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章