第十四届蓝桥杯集训——JavaC组第十四篇——嵌套循环

举报
红目香薰 发表于 2023/01/23 16:57:39 2023/01/23
【摘要】 ​ ​编辑第十四届蓝桥杯集训——JavaC组第十四篇——循环嵌套目录第十四届蓝桥杯集训——JavaC组第十四篇——循环嵌套循环嵌套是逻辑程序中的方法对应嵌套的循环复杂度嵌套循环示例:名词解析:笛卡尔积循序命名循环嵌套是逻辑程序中的方法循环嵌套,逻辑程序中常用的一种方法,不仅在C语言编程中用到,在卡西欧科学计算器中也常能用到的逻辑语言。在一个循环体语句中又包含另一个循环语句,称为循环嵌套。内嵌...

 编辑

第十四届蓝桥杯集训——JavaC组第十四篇——循环嵌套


目录

第十四届蓝桥杯集训——JavaC组第十四篇——循环嵌套

循环嵌套是逻辑程序中的方法

对应嵌套的循环复杂度

嵌套循环示例:

名词解析:

笛卡尔积

循序命名




循环嵌套是逻辑程序中的方法

循环嵌套,逻辑程序中常用的一种方法,不仅在C语言编程中用到,在卡西欧科学计算器中也常能用到的逻辑语言。在一个循环体语句中又包含另一个循环语句,称为循环嵌套。内嵌的循环中还可以嵌套循环,这就是多层循环。各种语言中关于循环的嵌套的概念都是一样的。当然,这个用法也会用到其它语言中,毕竟只是循环的一种使用方法。我们接下来一起看看在java是的用法。

对应嵌套的循环复杂度

时间复杂度O(n的m次方),n是循环长度m是嵌套层数。

嵌套循环示例:

这是一个基础的嵌套循环示例,i与j相当于笛卡尔积相乘。,这里的复杂度是O(n的2次方)

package com.item.action;

public class demo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//外层
		for (int i = 0; i < 10; i++) {
			//内层
			for (int j = 0; j < 10; j++) {
				System.out.print(i+"~"+j+"\t");
			}
			System.out.println();
		}
	}

}

输出效果:

左侧是i,右侧是j,在下列列表中可以看到整个渐变过程。

编辑

在上图中我们理解整个笛卡尔积的过程,也就是两两匹配,下面我对笛卡尔积做了个解释。

名词解析:

笛卡尔积

笛卡尔乘积是指在数学中,两个集合X和Y的笛卡尔积(Cartesian product),又称直积,表示为X × Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员  。

示例:

假设集合A={a, b},集合B={0, 1, 2},则两个集合的笛卡尔积为{(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}。 

其实我们可以无限次的套用,但是你会发现复杂度几何倍递增后无法执行结果了。

所以这个嵌套的层数越少越好。

我们做个例题:

2014年蓝桥杯Java C组——猜年龄

这里例题就是一个嵌套的暴力解题过程。我们很多时候用这种方法真的很方便。无需大脑进行复杂的运算直接暴力处置。

九九乘法表也是个很好的例子:

package com.item.action;

public class demo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//外层
		for (int i = 1; i < 10; i++) {
			//内层
			for (int j = 1; j <= i; j++) {
				System.out.print(j+"*"+i+"="+(i*j)+"\t");
			}
			System.out.println();
		}
	}

}

效果:

编辑

祝大家更好的掌握它。

循序命名

循环我们是可以进行命名的,例如:

package com.item.action;

public class demo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//外层
		a:for (int i = 1; i < 10; i++) {
			//内层
			for (int j = 1; j <= i; j++) {
				if(i==7) {
					break a;//结束外层循环,如果不写是结束内层循环
				}
				System.out.print(j+"*"+i+"="+(i*j)+"\t");
			}
			System.out.println();
		}
	}

}

结束外层循环效果:

编辑

结果自身循环效果:

编辑

这种用法全网不好找,我也是当年上学的时候老师教的,我记忆一辈子。

很多方法都是一代代传承下来的,传承的力量。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。