关于For循环的学习
2009-07-22 20:00
281 查看
请比较下面两个FOR循环的优缺点
1.for(i=1;i<N;i++)
{
if(condition)
dosomething();
else
dootherthing();
}
2.if(condition)
{
for (i=1;i<N;i++)
dosomething()
}
else
{
for (i=1;i<N;i++)
dootherthing()
}
解答:
其实这2段代码的效率问题是差不多的,因为要判断一个表达式的真假,几乎不需要时间,重要的是:
前者:
优点:条件判断出现在For里面,意味着,即使我在dosomething()或dootherthing()这2个函数中改变了condition的值,For循环也能正确执行我的意图,因为它在每次循环中都会重新检测conditon的值并针对condition的值做不同动作,所谓以不变应万变,这是难能可贵的.
缺点:如果condition一直未曾改变,我们可怜的if必须每次循环都判断一下condition的真假.牺牲了运行时效率.
后者:
优点:只进行一次判断,运行时效率高.适合那种condition的值不会改变的情况.
缺点:由于只在一开始进行一次判断,所以失去的改变condition的值的机会,也就是说,即使我在dosomething()中改变了condition的值为false,这个程序也不会改变它的判断,它依然执行着dosomething()的循环.我们不能随时更换我们需要进行的动作。这是牺牲了弹性.
1.for(i=1;i<N;i++)
{
if(condition)
dosomething();
else
dootherthing();
}
2.if(condition)
{
for (i=1;i<N;i++)
dosomething()
}
else
{
for (i=1;i<N;i++)
dootherthing()
}
解答:
其实这2段代码的效率问题是差不多的,因为要判断一个表达式的真假,几乎不需要时间,重要的是:
前者:
优点:条件判断出现在For里面,意味着,即使我在dosomething()或dootherthing()这2个函数中改变了condition的值,For循环也能正确执行我的意图,因为它在每次循环中都会重新检测conditon的值并针对condition的值做不同动作,所谓以不变应万变,这是难能可贵的.
缺点:如果condition一直未曾改变,我们可怜的if必须每次循环都判断一下condition的真假.牺牲了运行时效率.
后者:
优点:只进行一次判断,运行时效率高.适合那种condition的值不会改变的情况.
缺点:由于只在一开始进行一次判断,所以失去的改变condition的值的机会,也就是说,即使我在dosomething()中改变了condition的值为false,这个程序也不会改变它的判断,它依然执行着dosomething()的循环.我们不能随时更换我们需要进行的动作。这是牺牲了弹性.
相关文章推荐
- scala学习(2)-基本语法--for循环和if语句
- Linux学习之Shell--第四天:Shell流程控制-循环语句for
- 关于for语句结束循环时变量的值
- 关于for循环中,不同时机return 时,for循环的执行情况
- Objective-C学习笔记(十)——循环语句for和do-while的使用
- 开始学习深度学习和循环神经网络Some starting points for deep learning and RNNs
- 关于for循环遇到的一些错误
- 关于for循环容易忽视的地方:约束条件
- 关于For循环中定义的变量在循环外的引用
- 关于返回Return的一些困惑:”for(){return;}是否退出循环?“
- jstl标签使用-- 关于c for 循环
- Python学习笔记03 for循环和while循环
- Linux学习之Shell--第四天:Shell流程控制-循环语句for
- java基础学习——循环结构(while,do-while,for)
- 关于for 循环里 线程执行顺序问题
- Python3学习笔记【基础3--list,tuple,if条件判断,for/while循环,dict字典,set集合】
- java 循环结构(二)关于for语句的运用,以下例子让你充分理解for循环
- 关于for循环条件性能问题
- 简单学习JavaScript中的for语句循环结构
- 关于执行两个for循环效率注意点