Введение
Компьютеры часто используются для автоматизации повторяющихся задач. Повторять задачи без ошибок - это то, что компьютеры делают хорошо, а люди - плохо. Как и условные выражения, циклы также могут быть вложенными друг в друга, но это сделает нашу программу трудно читаемой и ухудшит производительность. Старайтесь избегать вложенных циклов. В Java есть три типа циклов. Мы рассмотрим их по очереди в этом практическом занятии.
Содержание
Рекурсия в информатике - это техника, при которой решение задачи зависит от решений более мелких экземпляров той же задачи (в отличие от итерации). Прием называется рекурсией и может быть применен к многим типам задач. Рекурсия - одна из центральных идей информатики. Сила рекурсии, очевидно, заключается в возможности определения бесконечного множества объектов с помощью конечного числа утверждений. Таким же образом, бесконечное количество вычислений может быть описано с помощью конечной рекурсивной программы, даже если эта программа не содержит явных повторений.
Пример:
Напишите следующий код в файле /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 сначала проверяется условие. Цикл while будет выполняться до тех пор, пока условие ложно. Синтаксис выглядит так:
Пример:
Напишите следующий код в файле /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
Цикл do-while
Этот цикл очень похож на цикл 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 выглядит так:
Пример:
for (init expression; condition expression; increment expression)
{
// statements here
}
Условие инициализации, которое отмечает начало цикла for, будет выполняться только один раз. Условное выражение будет проверяться каждый раз перед входом в цикл. Он используется для проверки условия выхода из цикла и должен возвращать логическое значение. Как только условие становится истинным, инструкции в цикле выполняются; после этого выражение инкремента будет выполняться для изменения значений счетчика или других переменных для следующей итерации.
Пример:
Напишите следующий код в файле /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 в блоке if инструкций. break выйдет из всего цикла, в то время как continue только прервет текущую итерацию и выполнит следующую итерацию (если условие истинно).
Пример:
Напишите следующий код в файле /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 не очень идеален с логической точки зрения. Его следует выбирать очень осторожно.



