免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2049 | 回复: 5
打印 上一主题 下一主题

请教递归函数的传参问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-01-13 13:21 |只看该作者 |倒序浏览
收起帖子

[ 本帖最后由 kingink1983 于 2009-1-15 00:46 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-01-13 14:02 |只看该作者

回复 #1 kingink1983 的帖子

当然不一样,楼主再看看else里面Towers()的参数是怎么传进去的

论坛徽章:
0
3 [报告]
发表于 2009-01-13 15:02 |只看该作者

回复 #1 kingink1983 的帖子

你要一步一步看就清楚了
你的第二个红色部分的结果:Towers (2,B,C,A)
Towers (1,B,A,C)
是函数控制返回towers(3,A,C,B) 执行 else 中的那个towers(n-1,auxiliary,dest,source)函数了,它现在是调用这个函数了。
而你的结果的第一个红色部分是因为调用towers(n-1,source,auxiliary,dest)得到的。
你理解递归了,就明白了。

论坛徽章:
0
4 [报告]
发表于 2009-01-13 16:21 |只看该作者
难道是我没说清楚?
main ->Towers (3,A,C,B),这个函数从头开始执行,执行到towers(n-1,source,auxiliary,dest);时,n =2 传递了三个参数这时source=‘A’,auxiliary= 'B',dest ='C',然后以这三个参数作为参数在交由void towers(int n,
            char source,
            char dest,
            char auxiliary)从头调用,这个时候,n=1source=‘A’,dest ='C',auxiliary= 'B'。tower中的第一个cout应该还是输出Towers (1,A,B,C)呀,怎么传入的参数改变了,输出Towers (1,A,C,B)呢?

论坛徽章:
0
5 [报告]
发表于 2009-01-13 17:52 |只看该作者
劳烦各位给指点一下吧,谢谢!

论坛徽章:
0
6 [报告]
发表于 2009-01-13 21:17 |只看该作者
????
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP