A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© huangxuanheng 中级黑马   /  2014-8-7 22:16  /  1191 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

循环语句for、while、do{}while和递归都可以做到循环,那么,大家喜欢用哪种循环呢?

7 个回复

倒序浏览
for、while、do{}while之间,C++之父推荐for,认为它清晰,能用则尽量用。不过我觉得见仁见智,因人而异。递归已经超出了循环的范畴,是计算机科学中非常非常非常重要的一种思想,大量算法问题用递归可以有非常清晰、简洁、直观的表示(执行效率另说,因为涉及优化)。但是,非函数式编程语言(如C/C++/Java/C#/Objective-C等常见的主流语言)通常对递归没有很好的优化,递归超过一定深度就栈溢出
回复 使用道具 举报
我喜欢用for
回复 使用道具 举报
fantacyleo 发表于 2014-8-7 22:34
for、while、do{}while之间,C++之父推荐for,认为它清晰,能用则尽量用。不过我觉得见仁见智,因人而异。 ...

想必是忘了限定条件才会有栈溢出的吧?
回复 使用道具 举报
huangxuanheng 发表于 2014-8-7 22:51
想必是忘了限定条件才会有栈溢出的吧?

不一定啊,你试试用递归算1到n的和,n到6500左右就会溢出,如果你用long表示结果,那么到5750就会挂掉。但如果经过优化,这个递归是可以转为普通的循环,那就不会栈溢出了
回复 使用道具 举报
个人喜好上喜欢while
回复 使用道具 举报
喜欢用for
回复 使用道具 举报
fantacyleo 发表于 2014-8-7 23:01
不一定啊,你试试用递归算1到n的和,n到6500左右就会溢出,如果你用long表示结果,那么到5750就会挂掉。 ...

这样啊,我到没有仔细研究,谢谢哈
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马