基本信息
文件名称:章算法设计与分析.pptx
文件大小:118.71 KB
总页数:14 页
更新时间:2025-06-10
总字数:约小于1千字
文档摘要

第11章算法设计与分析;11.1算法设计;通常求解一个问题可能会有多种算法可供选择,选择的主要标准是算法的正确性、可靠性、简单性和易理解性。其次是算法所需要的存储空间少和执行更快等因素。;一、递归算法;一般递归具有如下的形式:

if(递归结束条件)

{ //递归结束条件成立,结束递归调用

递归结束部分;

}

else

{ //递归结束条件不成立,继续进行递归调用

递归调用部分;

}

if(递归调用条件)

{ //递归调用条件成立,继续进行递归调用

递归调用部分;

}

[else

{ //递归调用条件不成立,结束递归调用

递归结束部分;

}];例:用递归求阶乘n!。

阶乘可用迭代表示如下:;例:Fibonacci数列递归算法。

无究数列:0,1,1,2,3,5,8,13,…,称为Fibonacci数列,可以迭代定义为:;二、分治算法;例:Hanoi塔问题;;voidHanoi(intn,chara,charb,charc)

//操作结果:将a塔座上的直径由小到大,至上而下编辑为

// 1至n的n个盘子按规则移到塔座c上,塔座b可用作

// 辅助塔座

{

if(n0)

{ //递归条件成立

Hanoi(n-1,a,c,b);//将a塔座上编号为1至

//n-1的圆盘移到b塔座,c作辅助塔座

cout编号为n的盘子从

a塔座移到c塔座

endl;

//将编号为n的圆盘从a塔座移到c塔座

Hanoi(n-1,b,a,c);//将b塔座上编号为1至

//n-1的圆盘移到c塔座,a作辅助塔座

}

};11.2算法分析;递归函数包含递归结束部分和递归调用部分,递归结束部分可以直接解决而不需要再次进行递归调用,递归调用部分则包含对算法的一次或者多次递归调用。一般设T(n)表示规模为n的基本操作的运行次数,不断通过迭代将T(n)转换为递归结束部分,在递归结束时可直接写出T(n)的值;例:分析Hanoi塔问题移动圆盘的次数