尾递归执行与goto相同的效果.或者说,在lang C中,while和goto替换了Scheme中尾递归的作用.是什么让设计师决定在C中保留goto和while实现?我认为人们在实际情况下几乎不会使用'goto'.
如果goto和while要弥补C不能通过递归方式写入来实现迭代的错误,那么它们是否处于相同的特殊构造中? - 避免正常递归.(就像'cond'不同'如果'在Scheme中)这个问题是否与他们保留这两个词的原因有关?
小智 5
尾递归不是替代goto.尾调用,如果你也有一流的功能(C也没有).
是什么让设计师决定在C中保留goto和while工具?
没有while(并且for在较小程度上),你不能正确地进行结构化编程 - goto很少是表达控制流的最佳方式.它goto(至少在C的上下文中)仍然有用,因为它可以表达一些模式,而没有内置的控制流构造函数更清晰有效.例如,它比在每个可能的出口点重复清理更容易和可靠地清除功能退出.
如果C有类似方案的宏,也许只用一个原语就可以了goto,所有的循环结构都建立在goto宏之上.但是C没有这样的宏,原因很充分(有些原因并不是很好).
| 归档时间: |
|
| 查看次数: |
1219 次 |
| 最近记录: |