介绍
计算机通常用于自动化重复性任务。重复执行任务而不出错是计算机擅长的,而人类则不太擅长。与条件表达式类似,循环也可以嵌套在另一个循环中,但这会使我们的程序难以阅读,并且性能也不会很好。尽量避免嵌套循环。在 Java 中有三种类型的循环。我们将在本实验中逐一学习它们。
计算机通常用于自动化重复性任务。重复执行任务而不出错是计算机擅长的,而人类则不太擅长。与条件表达式类似,循环也可以嵌套在另一个循环中,但这会使我们的程序难以阅读,并且性能也不会很好。尽量避免嵌套循环。在 Java 中有三种类型的循环。我们将在本实验中逐一学习它们。
递归(Recursion)是计算机科学中的一种技术,其中问题的解决方案依赖于同一问题的较小实例的解决方案(与迭代相对)。这种方法被称为递归,可以应用于许多类型的问题。递归是计算机科学的核心思想之一。递归的强大之处显然在于能够通过有限的语句定义无限的对象集合。同样地,无限的运算可以通过有限的递归程序来描述,即使该程序不包含显式的重复。
示例:
在 /home/labex/project/recursionTest.java
文件中编写以下代码:
public class recursionTest{
public static int fibonacci(int n){
if(n<=2){
return 1;
}else{
return fibonacci(n-1)+fibonacci(n-2);
}
}
public static void main(String[] args){
int res = recursionTest.fibonacci(10);
System.out.println(res);
}
}
输出:
使用以下命令运行 recursionTest.java
文件:
javac /home/labex/project/recursionTest.java
java recursionTest
查看输出:
55
进入 while 循环时,首先会检查条件。while 循环会一直运行,直到条件为 false。其语法如下:
示例:
在 /home/labex/project/whileTest.java
文件中编写以下代码:
public class whileTest
{
public static void main(String[] args)
{
int x = 1;
// 当 x 大于 3 时退出,内部代码总共会运行 3 次。
while (x <= 3)
{
System.out.println("x = " + x);
// 每次迭代时将 x 的值增加 1
x++;
}
}
}
输出:
使用以下命令运行 whileTest.java
文件:
javac /home/labex/project/whileTest.java
java whileTest
查看输出:
x = 1
x = 2
x = 3
这种循环与 while 循环非常相似,但有一个区别。无论条件的值是什么,循环至少会运行一次;之后才会检查条件。因此,有时它可能不适合某些情况。其语法如下:
示例:
在 /home/labex/project/doWhileTest.java
文件中编写以下代码:
public class doWhileTest
{
public static void main(String[] args)
{
int x = 1;
do
{
// 下面的代码会先运行,然后检查条件。
System.out.println("x = " + x);
x++;
}
while (x <= 3);
}
}
输出:
使用以下命令运行 doWhileTest.java
文件:
javac /home/labex/project/doWhileTest.java
java doWhileTest
查看输出:
x = 1
x = 2
x = 3
for 循环的结构如下:
示例:
for (init expression; condition expression; increment expression)
{
// statements here
}
初始化表达式(init expression)标志着 for 循环的开始,只会运行一次。条件表达式(condition expression)每次进入循环之前都会被检查,用于测试循环的退出条件,必须返回一个布尔值。一旦条件为 true,循环中的语句就会被执行;之后会执行增量表达式(increment expression),用于修改计数器或其他变量的值,以便进行下一次迭代。
示例:
在 /home/labex/project/forTest.java
文件中编写以下代码:
public class forTest
{
public static void main(String[] args)
{
// for 循环从 x=1 开始,直到 x<=3
for (int x = 1; x <= 3; x++) {
System.out.println("x = " + x);
}
}
}
输出:
使用以下命令运行 forTest.java
文件:
javac /home/labex/project/forTest.java
java forTest
查看输出:
x = 1
x = 2
x = 3
你可以在循环体中使用 continue
或 break
等代码随时退出循环。break
会退出整个循环,而 continue
只会退出当前迭代并执行下一次迭代(如果条件为 true)。
示例:
在 /home/labex/project/loopTest.java
文件中编写以下代码:
public class loopTest
{
public static void main(String[] args)
{
// for 循环从 x=1 开始,直到 x<=3
for (int x = 1; x <= 3; x++) {
if(x==2){
// 退出整个循环
break;
// continue 只会退出当前迭代,并执行下一次迭代
// 你可以删除 break 表达式并使用 continue。查看输出。
// continue;
}
System.out.println("x = " + x);
}
}
}
输出:
使用以下命令运行 loopTest.java
文件:
javac /home/labex/project/loopTest.java
java loopTest
查看输出:
x = 1
在本实验中,我们学习了三种类型的循环。for 循环和 while 循环相对容易掌握,而 do-while 循环在逻辑上并不十分完美。你应该非常谨慎地选择使用它。