python之递归函数

it2022-05-09  38

递归函数

递归练习

递归

递归简单理解就是自己去引用自己! 递归式函数,在函数中自己调用自己!

# 1到10的阶乘 n = 10 # 表示求10的阶乘 for i in range(1,10): # rang包括1不包括10 n*=i print(n) 创造一个函数,求任意数的阶乘 # 创造一个函数,求任意数的阶乘 def function(n): result = n # 表示用一个变量result接受结果 for i in range(1,n): # 表示计算到n的阶乘 result*=i return result # 循环遍历完之后又返回值。不管Java还是python,只要需要遍历结果集,那么90%利用return返回值。 '''print(function(10))'''

递归的核心 利用函数自己定义的变量/常量的值,再去通过函数自己去调用自己的值 无穷递归函数 如果这个函数被调用,程序的内存会溢出,泄露核心数据,效果类似于死循环

def fn(): fn() fn()

递归是解决问题的一种方式,它和循环很像 它的整体思想是,将一个大问题分解为一个个的小问题,直到问题无法分解时,再去解决问题 递归式函数的两个要件 1.基线条件

问题可以被分解为的最小问题,当满足基线条件时,递归就不在执行了

2.递归条件

将问题继续分解的条件 递归和循环类似,基本是可以互相代替的, 循环编写起来比较容易,阅读起来稍难 递归编写起来难,但是方便阅读 def factorial(n): ''' 该函数用来求任意数的阶乘 参数: n 要求阶乘的数字 ''' # 基线条件 判断n是否为1,如果为1则此时不能再继续递归 if n == 1 : # 1的阶乘就是1,直接返回1 return 1 # 递归条件 return n * factorial(n-1) print(factorial(5))

练习

1、练习 创建一个函数 power 来为任意数字做幂运算 n ** i 10 ** 5 = 10 * 10 ** 4 10 ** 4 = 10 * 10 ** 3 … 10 ** 1 = 10

def power(n , i): # 基线条件 if i == 1: # 求1次幂 return n # 递归条件 return n * power(n , i-1) print(power(2,3))

2、斐波那契数列(Fibonacci sequence)指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)

def F(n): if n == 0: return 0 elif n == 1: return 1 else: return F(n-1)+F(n-2) print(F(6))

最新回复(0)