回溯法——深度优先搜索

2007向凤盏 2022-12-31 22:42:28

简单概述:把问题的解空间转化成了图或者树的结构表示,然后使用深度优先搜索策略进行遍历,遍历的过程中记录和寻找所有可行解或者最优解。

基本思想类同于:图的深度优先搜索,二叉树的后序遍历

回溯法的实现方法有两种:递归和递推(也称迭代)。一般来说,一个问题两种方法都可以实现,只是在算法效率和设计复杂度上有区别。

def age(n):

if n == 1:

    return 18

return age(n –1) + 2

print(age(5))

#age(5) = age(4) +2    第一次进入

#age(4) = age(3) +2    第二次进入

#age(3) = age(2) +2    第三次进入

#age(2) = age(1) +2    第四次进入

#age(1) = 18          第五次进入,此时达到结束的条件,递归终止

这是一个典型的递归递推算法,它的每一次执行都是基于上一次的结果。

 

def fx(n):

   print("递归进入第",n,"层")

   if n == 3:

       return

   fx(n + 1)

   print("递归退出第",n,"层")

fx(1)

print("程序结束")

上述是一个关于递归回溯算法的实例,递归必须要有一个明确的结束条件, 否则就变成死循环导致栈溢出,都是以“if”语句作为结束条件的。每递归一次要解决一些事情,否则就失去了递归的意义。

...全文
126 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

124

社区成员

发帖
与我相关
我的任务
社区描述
Python课堂教学
python 高校
社区管理员
  • 42python
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧