博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
递归算法的设计
阅读量:7255 次
发布时间:2019-06-29

本文共 587 字,大约阅读时间需要 1 分钟。

递归的求解过程均有这样的特征:先将整个问题划分为若干个子问题,通过分别求解子问题,最后获得整个问题的解。而这些子问题具有与原问题相同的求解方法,于是可以再将它们划分成若干个子问题,分别求解,如此反复进行,直到不能再划分成子问题,或已经可以求解为止。这种自上而下将问题分解、求解,再自上而下引用、合并,求出最后解答的过程称为递归求解过程,这是一种分而治之的算法设计方法。

(1)简单递归算法设计方法

对于比较简单的递归算法,其一般设计步骤如下:

对原问题f(s)进行分析,假设出合理的"较小问题"f(s')。

假设f(s')是可解的,在此基础上确定f(s)的解,即给出f(s)与f(s')之间的关系。

确定一个特定情况(如f(1)或f(0))的解,由此作为递归出口。

(2)复杂递归算法设计方法

递归问题的参数构成了递归状态。对于较复杂的递归问题,常常采用试探方法。假设递归求解过程从状态s0到状态sn,求解的一般步骤如下:

假设当前状态为si,将si的环境设置为已处理过。

求出从si出发可以到达的某状态sj,若sj=sn,输出一个解;否则递归调用sj,表示从sj开始处理。

若从si出发不能到达任何状态,则回溯,将si的环境设置为未处理过(称为恢复环境)。

转载于:https://www.cnblogs.com/lisongfeng9213/p/3377889.html

你可能感兴趣的文章
[十七]JavaIO之CharArrayReader 和 CharArrayWriter
查看>>
[二十一]JavaIO之BufferedReader 与 BufferedWriter
查看>>
SpringCloud学习系列之三----- 断路器(Hystrix)和断路器监控(Dashboard)
查看>>
C# 使用 wkhtmltopdf 把HTML文本或文件转换为PDF
查看>>
POJ 4007 Flood-it!
查看>>
下载Crypto,CyCrypto,PyCryptodome 报错问题
查看>>
shell的奇淫巧技--自动化脚本(sed命令)
查看>>
批量更改文件名
查看>>
Hadoop1.x代码求海量数据最大值
查看>>
activemq 搭建--集群
查看>>
【洛谷4719】 动态dp(树链剖分,dp,矩阵乘法)
查看>>
运维与自动化系列③自动化部署基础与shell脚本实现
查看>>
利用window.performance.timing进行性能分析
查看>>
Java面向对象之继承
查看>>
状态模式
查看>>
ScheduledExecutorService 定时器用法
查看>>
Xshell 配置上传下载命令 rz sz 以及配置复制和粘贴
查看>>
<转载> pycharm快捷键及一些常用设置
查看>>
jmeter全链路压测
查看>>
显示逻辑卷信息
查看>>