(1)# 概述java
递归:即一个函数调用了自身,即实现了递归 凡是循环能作到的事,递归通常都能作到!python
(2)# 写递归的过程算法
一、写出临界条件
二、找出这一次和上一次关系
三、假设当前函数已经能用,调用自身计算上一次的结果,再求出本次的结果数据结构
(3)案例分析:求1+2+3+…+n的数和?app
输出结果以下:函数
(一)、深度优先搜索学习
说明:深度优先搜索借助栈结构来进行模拟
深度遍历示意图:spa
说明:
先把A压栈进去,在A出栈的同时把B C压栈进去,此时让B出栈的同时把DE压栈(C留着先不处理) 同理,在D出栈的时候,H I压栈,最后再从上往下
取出栈内还未出栈的元素,即达到深度优先遍历。
案例实践:利用栈来深度搜索打印出目录结构.net
程序代码:code
结果:
该过程示意图解释:(s-05-1部分)
(二)、广度优先搜索
原理分析:
说明:
队列是 先进先出的模型。A先进队,在A出队的时候,C B入队,按图示,C出队,FG 入队,B出队,DE入队,
F出队,JK入队,G出队,无入队,D出队,H I入队,最后E J K H I出队,均无入队了,即每一层一层处理、
故:先进先出的队列结构实现了广度优先遍历。 先进后出的栈结构实现的是深度优先遍历。
代码实现:
其实深度优先和广度优先在代码书写上是差异不大的,基本相同,只是一个是使用栈结构(用列表进行模拟)
另外一个(广度优先遍历)是使用了队列的数据结构来达到先进先出的目的。
广度优先运行输出结构:
先图解:按照每一层从左到右遍历便可实现。
总结
以上所述是小编给你们介绍的python 递归深度优先搜索与广度优先搜索算法模拟实现 ,但愿对你们有所帮助
原文连接:
https://www.jb51.net/article/149278.htm
识别图中二维码,领取python全套视频资料