前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据结构 | 每日一练(93)

数据结构 | 每日一练(93)

作者头像
小林C语言
发布2019-06-21 13:07:15
5550
发布2019-06-21 13:07:15
举报

数据结构

合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下

——老子

1

每日一练

1. 当过程 P 递归调用自身时,过程 P 内部定义的局部变量在 P 的 2 次调用期间是否占用同一数据区?为什么?

2. 试推导出当总盘数为 n 的 Hanoi 塔的移动次数。

正确答案

PS:||代表注释

1、过程p递归调用自身时,过程p由内部定义的局部变量在p的2次调用期间,不占同一数据区。每次调用都保留其数据区,这是递归定义所决定,用“递归工作栈”来实现。

2、设H n 为n个盘子的Hanoi塔的移动次数。(假定n个盘子从钢针X移到钢针Z,可借助钢针Y)

则 H n =2H n-1 +1 //先将n-1个盘子从X移到Y,第n个盘子移到Z,再将那n-1个移到Z

=2(2H n-2 +1)+1

=2 2 H n-2 +2+1

=2 2 (2H n-3 +1)+2+1

=2 3 H n-3 +2 2 +2+1

......

= 2 k H n-k +2 k-1 +2 k-2 +…+2 1 +2 0

=2 n-1 H 1 +2 n-2 +2 n-3 +…+2 1 +2 0

因为H 1 =1,所以原式H n =2 n-1 +2 n-2 +…+2 1 +2 0 =2 n -1

故总盘数为n的Hanoi塔的移动次数是2 n -1。

-end-

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 C语言入门到精通 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档