标签:c++
从9.14开学到现在接触了算是半年的c++,虽未旷课,但上课经常打瞌睡,吾乃学渣一个,谈谈自己对for的理解,有不足之处还请各路大神指点。
For循环从学的时候就感觉不是很理解,之后通过编小程序练习,对其理解才逐渐明朗一些。但是还是不太清晰(这个通过编程序是自己可以发现自己的薄弱)所以就上网搜了一下(我不是一个习惯上网搜东西的人)发现大家的见解真是丰富多彩、各有千秋。我就记住了两个:
1、双层for像时钟上的时针和分针,外层是时针,内层是分针,分针走一圈时针才走一格。这番见解真是形象啊!把分针看成内层for,分针走一圈相当于内for循环完毕。时针走一格相当于外for循环一次。让我很容易的明白了双层for的运行机制:每次外循环的开始都必须以内循环的彻底完成为条件,这句话也意味着内循环优先。
2、双层for乃是一个二维数组。不知是哪位高人的见解竟把双层for和二维数组联系起来了,妙也!每个双层for就像每个二维数组一样,运行内for即遍历数组的一行的每一列。运行外for就是遍历数组的每一行的过程。对呀,只能遍历完一行的每一列(内for循环完成)才能换到下一行(外for进行下一次循环),真好。
通过看大家的说法我才意识到搜索的意义。我之所以不好上网百度是因为我不喜欢遇到一个问题就上网百度结果,这样得到的结果虽然是看懂了但是思维的过程没有得到训练,因此遇到新问题很难做到举一反三(谨代表自己),所以我不习惯百度。但是经过这次,我发现不能太极端,既不能不百度也不能只百度,要有节制的运用网上资源。
废话少说,还是回到正题。说到对for的理解加深那是前10天左右。我做了一道蓝桥杯的题是一个abcde相乘的问题,用的是穷举法。那也是我用的最深的for,5层。之前对for的理解一直停留在单层和双层,做完这道题后发现把for的层数更加普遍化,一层二层三层五层,,,n层都是一样的运行机制。这道题对我来说最大的阻碍就是我刚开始老是把外层看做是最高位,内层逐渐像最低位靠拢。我就认定了最高位就一定在最外层的for,最低位一定在最内层的for。这种想法主要是之前我看过一个“水仙花数”的3层for的解决方法,在那里面就是用最外层的for作为百位,中层作为十位,内层作为个位,因此当初我没加思索就记住了这个3层for且认为这样的顺序是不能改变的。现在解决这个蓝桥杯的题就遇到了这个麻烦。我觉得不对,于是就把原来的水仙花程序按照不是最外层最高位的顺序修改了原来的程序,然后运行发现竟然也是可以的,这时我知道我对for的理解又深入了一点。并不是按照固定顺序排列的,之后我又想为什么呢?既然有多种方法为什么一定要这样排层与位的关系呢?想了一会我突然想到老师上课好像说过,内循环变化频率快于外循环,所以内循环尽量是长的多的循环,外循环尽量是小的短的循环,这主要考虑到程序时间的优越性。因此恍然大悟,因为个位变化频率最快。个位变化十次,十位变换一次,个位变化100次百位变话一次,。。。。。。。。
有理解不对之处,请各位斧正啊。
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:c++
原文地址:http://blog.csdn.net/lvgaoyanh/article/details/47184697