汉诺塔问题与函数递归调用优质PPT.pptx
- 文档编号:15639198
- 上传时间:2022-11-09
- 格式:PPTX
- 页数:13
- 大小:678.38KB
汉诺塔问题与函数递归调用优质PPT.pptx
《汉诺塔问题与函数递归调用优质PPT.pptx》由会员分享,可在线阅读,更多相关《汉诺塔问题与函数递归调用优质PPT.pptx(13页珍藏版)》请在冰豆网上搜索。
递归函数调用定义:
算法设计如下:
1、编写求年龄的函数age;
2、判断n=1时,返回值3;
3、判断n2时,函数age调用age(n-1)+2;
intage(intn)/求年龄函数if(n=1)return3;
elsereturnage(n-1)+2;
函数程序如下:
4、编写主调函数,调用递归函数。
main()/主函数intfage;
fage=age(5);
printf(“第五个小朋友的年龄为%d岁n,fage);
/递归函数调用自身5案例实现一个函数在它的函数体内调用它自身称为递归调用,这种函数称为递归函数。
源程序如下:
调用过程如下:
age(5)=age(4)+2age(3)+2age
(2)+2age
(1)+233+2=55+2=77+2=99+2=11语句编写intage(intn)/求年龄函数if(n=1)return3;
main()/主函数intfage;
printf(“第五个小朋友的年龄为%d岁n,age);
运行结果第五个小朋友的年龄为11岁elsereturnage(n-1)+2;
6应用实例【汉诺塔游戏】有三根杆子A,B,C。
A杆上有N个(N1)穿孔圆盘,盘的尺寸由下到上依次变小。
要求将所有圆盘移至C杆。
移动的过程始终保持大盘在下,小盘在上的原则。
ACB7应用实例ACB实例分析如下:
1、AC【汉诺塔游戏】有三根杆子A,B,C。
8应用实例ACB实例分析如下:
1、AB2、AC3、BC【汉诺塔游戏】有三根杆子A,B,C。
9应用实例ACB实例分析如下:
1、AC2、AB3、CB4、AC5、BA6、BC7、AC2个盘子从个盘子从AB2个盘子从个盘子从BC【汉诺塔游戏】有三根杆子A,B,C。
10应用实例1、AC只有1个盘子时:
2个盘子时:
1、AB2、AC3、BC3个盘子时:
1、AC2、AB3、CB4、AC5、BA6、BC7、AC函数源程序如下:
语句编写voidhanoi(intn,charA,charB,charC)if(n=1)printf(%c-%cn,A,C);
2个盘子个盘子从从AB2个盘子个盘子从从BC11应用实例4个盘子时:
2、AC1、3个盘个盘子从子从AB3、3个盘个盘子从子从BC2、AB1、2个盘个盘子从子从AC3、2个盘个盘子从子从CB2、BC1、2个盘个盘子从子从BA3、2个盘个盘子从子从AC1、AB2、AC3、BC4、AB5、CA6、CB7、AB8、AC9、BC10、BA11、CA13、AB14、AC15、BC12、BC函数源程序如下:
voidhanoi(intn,charA,charB,charC)if(n=1)printf(%c-%cn,A,C);
12应用实例函数源程序如下:
多个盘子算法设计如下:
1、把n-1个盘子由AB2、把第n个盘子由AC3、把n-1个盘子由BCmain()/主函数intn;
scanf(%d,&
n);
hanoi(n,A,B,C);
elsehanoi(n-1,A,C,B);
printf(%c-%cn,A,C);
hanoi(n-1,B,A,C);
运行结果3A-CA-BC-BA-CB-AB-CA-C谢谢!
单击此处添加文字内容1案例引入递归调用定义单击此处添加文字内容2案例分析使用递归实现单击此处添加文字内容3递归调用应用实例SUMMARY总结
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汉诺塔 问题 函数 递归 调用
![提示](https://static.bdocx.com/images/bang_tan.gif)