- 11
- 0
- 约1.77万字
- 约 25页
- 2017-06-16 发布于北京
- 举报
递归程序设计
递归算法实现的程序简洁、易读懂。可以用来解决一些复杂的问题。
在使用Matlab软件进行递归程序设计当中,要特别注意的是:程序中一定要有返回语句(return),以便使程序在适当的时候终止递归调用,否则会出现堆栈溢出,甚至导致程序中断退出。为防止程序异常终止,可以添加异常处理代码(try…catch…end)。
递归程序设计的第一步,要分析问题,建立问题求解的递推关系式或算法。然后再进行程序设计实现。
计算阶乘
从n个数中取n个数的数的全排列记为,且有。
因此建立其求阶乘的递推关系式:,结束条件:。
计算阶乘的Matlab函数如下:
function r=factorial(n)
%计算n的阶乘
if n==1
r=1;
return
end
r=n*factorial(n-1);
例子:
再命令行输入factorial(3)则返回6
组合数学中的Pascal公式
从n个数中取r个的组合数记为,且有,。
组合数学中又这样的Pascal公式:
。
因此可以编写如下的函数求组合数:
function num=getcom(n,r)
if r==0 | (n==r) %结束条件
num=1;
return
end
if r==1,%2004-12-7add
num=n;
return
end
num=getcom(n-1,r)+getcom(n-1,r-1);
汉诺塔问题
“Hanoi塔”问题
有3根柱子:A,B,C,现有n个大小不一的圆盘依半径的大小,从下而上套在柱子A上,最大的圆盘放在柱子A的最下面。现要将所有的圆盘从柱子A移动到C柱子上,每次只允许从一根柱子转移到另一根柱子上,且在转移过程中不允许出现大圆盘放在小圆盘上。B盘为可以利用的柱子,每次只允许移动一个盘子,请问要转移多少次才能将柱子A上的圆盘全部转移柱子C上?
“Hanoi塔”是组合数学中的著名问题之一。
问题求解
主程序调用:
global nmove
nmove=0;
hanta(‘A’,’B’,’C’,3)
nmove
说明:上面的程序调用表示有3根柱子:A ,B,C,现有3个盘子在A上,要将其移动到C盘上,B盘为可以利用的柱子。
实现程序
function hanta(posfrom,posmiddle,posend,numplate)
global nmove%移动次数,调用nmove之前声明nmove为全局变量,且赋值为0
if numplate==1
sprintf(从%s移到%s,posfrom,posend)
nmove=nmove+1;
return
end
try
hanta(posfrom,posend,posmiddle,numplate-1)
sprintf(从%s移到%s,posfrom,posend)
nmove=nmove+1;
hanta(posmiddle,posfrom,posend,numplate-1)
catch
catch error
end
实例:当有3个盘子时,该递归程序的输出为:
ans =
从A移到C
ans =
从A移到B
ans =
从C移到B
ans =
从A移到C
ans =
从B移到A
ans =
从B移到C
ans =
从A移到C
nmove =
7
案例:商人安全过河问题
三名商人各带一个随从乘船渡河,一只小船只能容纳二人,由他们自己划行。随从们密约,在河的任一岸,一旦随从的人数比商人多,就杀人越货。但是如何乘船渡河的大权掌握在商人们手中。商人们怎样才能安全渡河呢?
问题分析
设商人某岸上的人数为x,随从人数为y;
此岸彼岸商人与随从的人数必须满足以下下面其中一种情况:
x不等于0时,x=y;
x等于0
以上两种称为安全状态。
每次划行时做出决策:
可能的决策必须满足两个条件:
船上载人不超过2人;
确保出发点岸上和到达对岸后,两岸的人数必须同时满足安全状态
模型建立
设第k次渡河前此岸的商人数为xk,随从人数为yk,k=1,2,……, xk,yk=0,1,2,3.
将二维向量Sk=(xk,yk)定义为状态(即第k-1次渡河后的此岸状态)。安全渡河条件下的状态几何称为允许状态集合,记作S,根据问题分析很容易得到
S={(x,y)|(0,0),(0,1),(0,2),(0,3),(1,1),(2,2)(3,0),(3,1),(3,2),(3,3) } (1)
注:为什么不能取(1,0),(2,0),(2,1)?
记第k次渡船上的商人数为uk,随从数为vk,将二维向量dk={ uk,vk}定义为决策。允许决策集合记作D,由小船的容量可知
D={(u,v)|
您可能关注的文档
- 资源开发经典话术.doc
- 财务考核办法文案cc2015.doc
- 赛门铁克杀毒软件安装说明适用于64位操作系统.doc
- 质量保证复习题20052015.doc
- 走复兴路圆中国梦.doc
- 资格预审文件_施工.doc
- 赖氨酸物流解决方案.doc
- 走近“遥远”的象形字.doc
- 走进涿州实验中学.doc
- 贵州省统计病案的管理平台实施文案NEW2015.doc
- 2025-2026学年天津市和平区高三(上)期末数学试卷(含解析).pdf
- 2025-2026学年云南省楚雄州高三(上)期末数学试卷(含答案).pdf
- 2025-2026学年甘肃省天水市张家川实验中学高三(上)期末数学试卷(含答案).docx
- 2025-2026学年福建省厦门市松柏中学高二(上)期末数学试卷(含答案).docx
- 2025-2026学年广西钦州市高一(上)期末物理试卷(含答案).docx
- 2025-2026学年河北省邯郸市临漳县九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省石家庄二十三中七年级(上)期末历史试卷(含答案).docx
- 2025-2026学年海南省五指山市九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省唐山市玉田县九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省邢台市市区九年级(上)期末化学试卷(含答案).docx
最近下载
- 心源性晕厥临床表现及护理.pptx VIP
- 食物不耐受IgG解读.pptx
- 2021 固态锂电池用固态电解质性能要求及测试方法 无机氧化物固态电解质.docx VIP
- 毕业论文(设计)小型混凝土搅拌机设计.doc VIP
- 人教版(2024)新教材八年级数学下册第20章20.1 勾股定理及其应用每课时教学设计汇编(含三个教学设计).docx VIP
- 2025CSCO前列腺癌诊疗指南更新解读(全文).pdf VIP
- 湘教版(2024)新教材八年级地理下册第六章第二节《东北地区的人口与城乡分布》精品教学设计.docx VIP
- 山西省2024年中考英语模拟试卷(含答案)2.pdf VIP
- 2025年食品安全国家标准-食品生产卫生规范GB14881培训考试试题及参考答案.docx VIP
- 语文 《红楼梦》阅读中“选择题”解题技巧阐释与训练 2024-2025学年统编版高一语文必修下册.docx VIP
原创力文档

文档评论(0)