每次都不会循环的案例,我想问一下;比如写一个双层for循环时,应该怎么去构想?有什么诀窍吗?跪求各位大神帮忙!
什么叫做构造双层for循环有什么诀窍?不是很明白lz想问的
搞清楚循环是干嘛的,从最简单的while循环开始。
所有的for循环都可以用while循环表示,所有的多重循环都可以用单一的循环表示。
比如:
for (int i = 1; i < 10; i++)
{
for (int j = 1; j <= i; j++)
Console.Write("{0}*{1}={2}\t", i, j, i * j);
Console.WriteLine();
}
打印一个乘法表,其实也可以只用一个循环。
int i = 1; j = 0;
while (i < 10 && j <= i)
{
j++;
Console.Write("{0}*{1}={2}\t", i, j, i * j);
if (j == i)
{
i++;
Console.WriteLine();
}
}
所有的多重循环一定可以只用一个循环表示,所有的for循环和while循环都可以互转。如果你掌握了这些规律,那么就算学明白了。
不知道,反正从来是想着变量怎么处理,而不是想去怎么处理变量。
我觉得题主的困惑我们大多数都遇到过的。
我是这样理解计算机的循环的:其实它并不是多么漂亮的东西,只是因为计算机的计算能力十分强大,才使用这种循环的方式穷尽所有数据,
来找到所有的可能答案。
一般在程序里考虑循环时,我们都会问:
1.这里需要循环吗?
2.如果需要,它应该致力于解决什么问题?
3.解决问题最少只需要一种循环吗?
4.如果需要循环嵌套,那每一层循环的内在逻辑是什么?每一层解决的分支问题有何不同之处?
当然,这都是设计层面的认识。循环只是编程中用到的一种方法,关键是,你在面对和分析问题时,是怎么考虑和设计解决问题的步骤的。
如果实在没有更好的法子,就用循环吧;如果没有更好的法子,那就干脆多用几层循环吧~
就像下两层梯一样,一层梯一层,希望对你有用
这个问题可以从计算机的底层操作系统说起,一个循环几种写法,那么CPU运行指令条数不一样,如查循环合理利用的存储系统的局部性原理,则性能会大大提高。
for,while 这些都是循环来实现逻辑
画图,按照自己习惯的方式,不一定是程序框图,比如我就喜欢画圈圈,肯定比直接就写好用得多
把你当成计算机 试数字 知道怎么循环的了 再来想程序是来干什么的
把你当成计算机 试数字 知道怎么循环的了 再来想程序是来干什么的
一般是从简单到负责去演进,就是用简单几个数据去尝试,这符合人的思维方式。而有时会设计数学上的一些公式算法,这还得靠数学方面的只是,不想涉及这个就是两个字“归纳”
在console打印三角型(通过* 符号,空三角和满三角)
所有的for循环都可以用while循环表示,所有的多重循环都可以用单一的循环表示。
首先从大的逻辑开始写最外层小的里从
for循环是你明确循环的次数,如果使用while 知道跳出条件即可
这个说是技术活也可,但是说是简单的基础也是无可厚非的,主要是你要考虑双层for的时候的变量n,先小后大?还是先大后小?这都是需要考虑的
主语说是怎么写,还是要自己去把握。
当有一个ArrayList时,想要去数据是就需要遍历
比如ArrayList stuList的集合,在student中有name和age
就需要这样:
for(Student stu : stuList)
{
Student newStu = stu;
for(String str : newStu)
{
String newName = str.getName();
}
}
当然我这个是可以一次for循环就可以的,我只是举个例子
我这个只是一个参考
逻辑思维很重要,干软件这一行。可以发散思维想象,或者空间思维比较好的话,可以空间思维去想。敲代码之前必须有明确的思路,要不敲到一半的时候就不知道下面的怎么去写,磨刀不误砍柴工。
我觉得应该要先把程序的执行流程弄明白,有些语言规定的语法是怎么样,先不去钻牛角尖,按他说的去理解,
如果你想深入了解就去看看计算机组成原理、汇编语言等书籍
记住循环的控制要素:循环执行条件! 无论是几重循环,只要确定好每层循环的控制条件,就可以了!
记住循环的控制要素:循环执行条件。无论是几重循环,只要确定好每层循环的控制条件,就可以了!
例如以下双层循环:
for(int i=0;i<10; i++)//外层循环
for(int j=0; j<i; j++) //内层循环
{…………}
外层循环控制条件:变量 i 控制循环次数10次,表示循环体 { }里的内容 执行10次
内层循环控制条件:循环次数由变量 i 的值确定。i 的值是几就循环执行几次
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 32 33 34 35
36 37 38 39 40 41 42
43 44 45 46 47 48 49
for(int i=0;i<7;i++){
for(int j=0;j<7;++){
........................
}
}
eg: 要打印一个九乘九的乘法表。不使用循环时怎么做?
1*1, 1*2, 1*3, ... 2*2, 2*3, 2*4, ..., 9*9
通过归纳发现, 第一列是 1*一个数, 这个数【1~9】。需要乘9次。 第二列是 2*一个数, 这个数【2~9】。需要乘8次。.... 第九列 是 9*一个数, 这个数为【9】
所以用循环就是:
for(int i=1; i<10; i++) { //第 i 列
for (int j=i; j<10; j++) { // 【1~9】【2~9】【3~9】。。。【9】
//打印 i*j
}
}
当然你可以在碰到这种问题事,一步一步写在纸上,看明白怎么实现的,当然比较慢
当然你可以在碰到这种问题事,一步一步写在纸上,看明白怎么实现的,当然比较慢
for循环和while是可以等价交换的,do...while很少使用。但while和for循环是有区别的,第一点是使用区别:控制条件语句所控制的那个变量在for循环结束后就不能再访问了,而while结束后还可以继续使用。第二点是场景区别:for循环是针对一个范围内判断循环进行操作。而while适合循环次数不明的情况下进行判断
for循环和while是可以等价交换的,do...while很少使用。但while和for循环是有区别的,第一点是使用区别:控制条件语句所控制的那个变量在for循环结束后就不能再访问了,而while结束后还可以继续使用。第二点是场景区别:for循环是针对一个范围内判断循环进行操作。而while适合循环次数不明的情况下进行判断
复杂的循环你可以人脑模拟计算机运行一遍,一般就会知道怎么弄了。。。
debug的时候试小一点的数字单步执行几次,看看有没有考虑不周到的地方。。。
递归之类的用归纳的方法试试,还有状态转移方程。。。
双层for循环的话,还是看你的具体想要实现什么功能,
for (i=0;i<x;i++)
{
for(j=0;j <y;j++)
{
}
}
很简单的一个双层for循环,如果x<y 建议把y放到内层循环里面,能够提高一点效率。
初学者多练习,不懂的 可以问我 QQ 502727023
嵌套For循环性能优化案例,不过是Java语言的,不过语法差不多吧
http://blog.csdn.net/feng88724/article/details/8042722
比如你要解决一个2维的问题 举个栗子 要给一个二维数组赋值 那就要用到两个for 同样的 生活中 你要解决一个二维问题 比如每天 他会做什么 然后每次他要做好多差不多相同的事
(可以用if判断不同的事)这时候就需要
```for(int i=0;i<days;i++)
for(int j=0;j<objects;j++)
{
//判断不同的事物
if()
{
}
else
{
}
}
如何构想?你要理解你的需求,需要不需要重复去执行
给你举个例子:
要实现这个效果:
*
**
代码:
int i,j
for (i=1;i<=4;i++)
{
for (j=1;j<=i;j++)
{
printf("*");
}
printf("\n");
}
所有的循环,都可以用if goto .最多加上 else 三个关键字 搞定。
包括里面的 continue,break 语句
C 所有三个循环 ,都是当型循环,本质是一样的。
for 循环,最简单的是 对某个范围的所有谓数 ,施加同样的操作。
for,while 这些都是循环来实现逻辑
for (int i = 1; i < 10; i++)
{
for (int j = 1; j <= i; j++)
sum=sum+i*;j
}
搞清楚问题,搞清楚循环,为什么要用循环。什么时候用
如果说你要操作的数据有多层嵌套的数据 就需要用循环了,比如 [
{
{1,2,3,4,5},
{1,2,3,4,5}
},
{1,2,3,4,5,}
]这样的数据结构就需要双层循环了