设为首页 加入收藏

TOP

2.3 执行动作的递归(3)
2014-03-11 13:04:45 来源: 作者: 【 】 浏览:122
Tags:2.3 执行 动作

2.3  执行动作的递归(3)

注释:cout语句有助于跟踪递归函数的逻辑

图2-8和图2-9显示修改后的伪代码函数writeBackward和writeBackward2的输出。最初给定的字符串为"cat"。

 

 

应该准确把握上述两种函数的区别。对于参数s,这两个函数的递归调用生成了不同的值序列。尽管如此,两个函数都正确地逆置了字符串参数。这两个函数针对不同的递归调用,在不同的时间输出了不同的字符,从而弥补了s值序列的差异。由图2-8和图2-9的箱式跟踪可知,writeBackward在生成新箱(新递归调用)前输出一个字符,而writeBackward2在取消箱(从递归调用返回)后输出一个字符。两个函数殊途同归,用不同策略完成相同任务。

这个示例还演示了在调试递归函数时,如何将箱式跟踪与合适的cout语句配合。cout语句出现在递归函数的开始、中间以及结尾以报告参数s的值。通常,当调试递归函数时,还应该报告局部变量的值以及函数中发生递归调用的位置,如下所示:

  1. abc(...);  
  2. cout << "Calling function abc from point A.\n";  
  3. abc(...) // This is point A  
  4. cout << "Calling function abc from point B.\n";  
  5. abc(...); // This is point B 

注释:位置合适的临时cout语句可以辅助调试递归函数

要注意,cout语句不应出现在函数的最终版本中。

注释:当调试完函数之后,应该删除cout语句

问题3 给定整数n>0,编写递归函数countDown输出n,n-1,…,1。提示:哪些任务可以自己完成?哪些任务可以交给朋友去做?

 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇2.3 执行动作的递归(2) 下一篇2.4.1 逆置数组项

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·HTTPS 详解一:附带 (2025-12-26 02:20:37)
·TCP/IP协议到底在讲 (2025-12-26 02:20:34)
·TCP和UDP在socket编 (2025-12-26 02:20:32)
·有没有适合新手练习 (2025-12-26 01:48:47)
·用清华镜像网怎么下 (2025-12-26 01:48:44)