对于循环[C / java之类的语法]

时间:2011-10-06 16:18:54

标签: java c++ c algorithm

所以我在这里处理这个简单的问题

考虑这两个循环并请 向我解释是否存在任何差异 两种写作方式之间的

方法1:

  for(i=(max-1) ; i>=0 ; i--){ do-some-stuff }

方法2:

  for(i=max ; i>0 ; i--)     { do-some-stuff }
我问这个的原因是因为今天在学校 当我们看到一些Java函数时,有 这个回文方法将用作最大值 传递给它的单词的长度和使用的方法 通过for循环,是第一个,任何人都可以 澄清为什么写那篇文章的人 使用该方法预先编码的代码?

2 个答案:

答案 0 :(得分:13)

是的,有一个很大的区别 - 在版本中,范围是[0, max-1]。在第二个版本中,它是[1, max]。例如,如果您尝试使用max元素访问基于0的数组,则第二个版本会爆炸而第一个版本不会爆炸。

如果循环运行的 order 无关紧要,我个人会使用更惯用的升序序列:

for (int i = 0; i < max; i++)

...但是当降序时,第一个表单给出与此相同的值范围,只是顺序相反。

答案 1 :(得分:3)

两个循环都将迭代max次。但范围会有所不同:

  • 第一个循环的范围是max - 10(包括两者)
  • 第二个第二个循环的范围是max1

因此,如果您使用i作为数组索引,或者执行某些函数i,依赖于i,那么它将为终端创建问题值(例如0在第一个中被考虑,而在第二个中则不被认为是max。但是如果你只是想循环遍历i循环,并做一些与{{1}}的值无关的工作,那么就没有区别了。