递归函数: 递归,就是在运行的过程中调用自己。程序调用自身的编程技巧称为递归( recursion)。递归作为一种算法在程序设计语言中广泛应用。 (百度百科)
1、阶乘的定义,写一个经典递归算法阶乘。
n! = 1×2×3×...×(n-1)×n
0!=1,n!=(n-1)!×n
def factorial(n):
if(n<=1):
return 1
else:
return factorial(n-1) * n
2、斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列: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 fibonacci(n):
if n = 0:
return 0
elif n = 1:
return 1
else:
return fibonacci(n-1) + fibonacci(n-2)
实操:python中最有用的就是 需要进行对文件批量处理,而且文件又在不同的目录,可以使用递归方法将所有文件的路径遍历利出来后续进行批量修改。
import os
def show_files(base_path, all_files=[]):
"""
遍历当前目录所有py文件及文件夹
:param path:
:param all_files:
:return:
"""
file_list = os.listdir(base_path)
# 准备循环判断每个元素是否是文件夹还是文件,是文件的话,把名称传入list,是文件夹的话,递归
for file in file_list:
# 利用os.path.join()方法取得路径全名,并存入cur_path变量,否则每次只能遍历一层目录
cur_path = os.path.join(base_path, file)
# 判断是否是文件夹
if os.path.isdir(cur_path):
show_files(cur_path, all_files)
else:
if not file.endswith('.py'):
continue
else:
all_files.append(cur_path)
return all_files