代码大全第17章

不常见的控制结构

子程序中的多处返回。半途退出子程序的方法,类似于break、exit和return等,都是控制程序的开关。多使用return等开关能够增强程序的可读性,但是仅仅是为了可读性,平常的时候还是要十分谨慎,不要随意乱用,仅仅是为了锦上添花。

递归。递归算法应该是数学中最常使用的一种证明类算法,这种算法的有点是针对小范围内容会有非常好的效果,但是针对大范围的问题,这个结果会令人难以理解。书中给出的例子,子程序中还要调用本身的,无限递归之中会出现多维的情况,让人难以理解。针对递归的用法还是需要在深入去看的,确认几个递归用法的场景是最重要的。

使用递归的技巧:

1.确认递归能够停止。我们子程序之中必须加入判断递归停止的语句,否则将进入无限循环。

2.安全计数器。在本书中提到了好多次的安全计数器,是为了停止循环或者递归这样的结构体,但是在我们的编程语言中,是否给定义了安全计数器这种工具,规定了具体的次数?还是需要开发者自己进行设置呢?这一点我还没有百度到合适的解释。

3.尽量保持递归在一个子程序中,毕竟这个程序太复杂了,本身就会调用自己,如果跨程序调用可能产生的混乱太大。

4.留心栈空间,这一条就解释了上面的安全计数器的问题,安全计数器是我们自己来设定的,在设定的时候我们要考虑到内存的上线,要把他的上限设置得足够低,以防止栈溢出。对于“栈”的概念有些遗忘了。

**(内容来自百度百科)"栈“者,存储货物或供旅客住宿的地方,可引申为仓库、中转站,所以引入到计算机领域里,就是指数据暂时存储的地方,所以才有进栈、出栈的说法。栈可以用来在函数调用的时候存储断点,做递归时要用到栈!

*******使用递归最重要的一点是,在用递归之前你应该考虑它的替换方案*********

关于“goto”,这部分语法在C类语言中争议非常大,而且属于一种“高阶”用法,根据书中的书法,90%能够使用“goto”的地方,都可以使用别的方法来代替。所以这部分就略过了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值