- 计算阶乘 5! 5 * 4 * 3 * 2 * 1
def fn(n):
if n == 1:
return n
return n * fn(n - 1)
print(fn(5)) # 120
内存运行步骤如下
- 统计文件夹文件的总大小
如果这个文件夹中还有文件夹,应该继续到这个文件夹中去计算
import os
def get_size(path): # 定义一个获取文件夹总大小的函数,参数为路径
sum_size = 0 # 文件大小的变量
if os.path.isdir(path): # 如果路径是文件夹
name_lst = os.listdir(path) # 把该文件夹中的所有目录列表赋值给name_lst
for name in name_lst: # 遍历name_lst中每个路径,
name_path = os.path.join(path,name) # 每个路径加入参数的路径中
if os.path.isfile(name_path): # 如果以上路径是文件 ,值到所有的文件夹都打开完,就走return,函数才会停止。
sum_size += os.path.getsize(name_path) # 变量sum_size重新赋值,加上文件大小
elif os.path.isdir(name_path): # 如果是文件夹,继续执行此函数,于是就形成了递归,函数内部代码块调用自己。于是又开辟了一个临时空间。
sum_size += get_size(name_path)
return sum_size # 最后返回给函数执行者所有文件的大小
elif os.path.isfile(path): # 如果参数路径为文件
return os.path.getsize(path) # 直接返回该文件大小
该例运行原理如下
- 三级菜单用递归原理内存运行机制如下