哪个网站是做韩国化妆品正品,特色专业建设展示网站 湖北,外国广告公司网站,vs2015 网站开发递归的定义
函数作为一种代码封装#xff0c;可以被其他程序调用#xff0c;当然#xff0c;也可以被函数内部代码调用。这种函数定义中调用函数自身的方式称为递归。
递归的思想
把规模大的问题转化为规模小的、具有与原来问题相同解法的问题来解决。在函数实现时#…递归的定义
函数作为一种代码封装可以被其他程序调用当然也可以被函数内部代码调用。这种函数定义中调用函数自身的方式称为递归。
递归的思想
把规模大的问题转化为规模小的、具有与原来问题相同解法的问题来解决。在函数实现时因为解决大问题的方法和解决小问题的方法往往是同一个方法所以就产生了函数调用它自身的情况。
递归的使用方法
找到递归关系即把一个复杂的问题转化为与它形式相似、但规模较小的问题 找到递归出口即问题转化时当规模足够小可以直接求解 函数调用自己即称之为递归调用。
那么什么场景中会使用到递归呢
最典型的递归场景为找出一个文件夹中全部的文件。
如图在D:/test 文件夹内有如下嵌套结构和所属的文件 可以通过递归编程的形式完成 演示Python递归操作
需求通过递归找出一个指定文件夹内的全部文件思路写一个函数列出文件夹内的全部内容如果是文件就收集到list
如果是文件夹就递归调用自己再次判断。
import osdef test_os():演示os模块的3个基础方法print(os.listdir(D:/test)) # 列出路径下的内容# print(os.path.isdir(D:/test/a)) # 判断指定路径是不是文件夹# print(os.path.exists(D:/test)) # 判断指定路径是否存在def get_files_recursion_from_dir(path):从指定的文件夹中使用递归的方式获取全部的文件列表:param path: 被判断的文件夹:return: list包含全部的文件如果目录不存在或者无文件就返回一个空listprint(f当前判断的文件夹是{path})file_list []if os.path.exists(path):for f in os.listdir(path):new_path path / fif os.path.isdir(new_path):# 进入到这里表明这个目录是文件夹不是文件file_list get_files_recursion_from_dir(new_path)else:file_list.append(new_path)else:print(f指定的目录{path}不存在)return []return file_listif __name__ __main__:print(get_files_recursion_from_dir(D:/test))def a():a()总结
1. 什么是递归
在满足条件的情况下函数自己调用自己的一种特殊编程技巧
2. 递归需要注意什么
注意退出的条件否则容易变成无限递归注意返回值的传递确保从最内层层层传递到最外层
3. os模块的3个方法
os.listdir列出指定目录下的内容os.path.isdir判断给定路径是否是文件夹是返回True否返回Falseos.path.exists判断给定路径是否存在存在返回True否则返回False
【Python函数的递归】