- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •• Данные
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •РекурсивныйЦентри дистанционногоне
- •Центр дистанционного
- •Центр дистанционного
- •Пример: факториалЦентр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Ц нтр дистанционного
- •Другие примеры:Центр дистанционного
- •Пример: палиндромЦе тр истанционного
- •Немного другойЦентрпример:дистанционного
- •Центр ди танционного
- •Взаимная рекурсияЦентр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
- •Центр дистанционного
Центр дистанционного
обучения
Пример Die.java
public class( Dieигра{ в кости) private final int MAX = 6; // maximum face value
private int faceValue; // current value showing on the die
//Constructor: Sets the initial face value. public Die( ) {
faceValue = 1;
}
// Rolls the die and returns the result. public int roll() {
faceValue = (int)(Math.random() * MAX) + 1; return faceValue;
}
4-61 online.mirea
.ru
Центр дистанционного
обучения
Die.java
//Face value mutator.
public void setFaceValue (int value) { faceValue = value;
}
//Face value accessor. public int getFaceValue() { return faceValue;
}
//Returns a string representation of this die. public String toString()
String result = return result;
}
}
4-62
online.mirea
.ru
|
Центр дистанционного |
|
обучения |
Main.java (игра в |
|
public staticкости) |
|
public class Main{ |
|
void main (String[] args) { |
|
Die die1, die2; |
|
int sum; |
Создаем два |
|
|
die1 = new Die(); |
объекта Die |
|
|
die2 = new Die(); |
Вызов метода roll в |
|
|
die1.roll(); |
классе Die |
|
|
die2.roll(); |
|
System.out.println ("Die One: " + die1 + ", Die Two: " + die2); |
Вызов метода
die1.roll(); сеттера die2.setFaceValue(4);
System.out.println ("Die One: " + die1 + ", Die Two: " + die2);
4-63 online.mirea
.ru
Центр дистанционного
Main.java обучения
sum = die1.getFaceValue() + die2.getFaceValue(); System.out.println ("Sum: " + sum);
Вызов метода геттера
sum = die1.roll() + die2.roll();
System.out.println ("Die One: " + die1 + ", Die Two: " + die2); System.out.println ("New sum: " + sum);
}
}
4-64 online.mirea
.ru
Центр дистанционного
обучения
Метод toString()
•Метод toString() это метод класса Object, который лежит на вершине иерархии классов java. Создавая собственные классы мы неявным образом наследуемся от класса Object
•Для все пользовательских классов необходимо переопределить метод toString()
•Метод toString() возвращает значение символьной строки, для того чтобы тем самым представить данный объект
•Он вызывается автоматически, когда объект конкатенируется со строкой или когда он передается внутрь метода println()
4-65 online.mirea
.ru
Центр дистанционного
обучения
Рекурсия
Что такое рекурсия?
•В контексте языка программирования рекурсия - это некий активный метод (или подпрограмма) вызываемый сам по себе непосредственно, или вызываемой другим методом (или подпрограммой) косвенно.
Для чего использовать рекурсию?
•Существует распространенное мнение, что гораздо легче научиться программировать итеративно, или использовать нерекурсивные методы, чем научиться программировать рекурсивно.
•Хотя на самом деле, рекурсия является методом основанным на технике использования итераций.
online.mirea
.ru
Центр дистанционного
обучения
Типы рекурсии
•Прямая рекурсия:
procedure Alpha; begin
Alpha end;
•Косвенный (или взаимная) рекурсия:
procedure Alpha; begin
Beta end;
procedure Beta; begin
Alpha end;
Возникают трудности в некоторых языках программирования из-за использования прямой ссылки
online.mirea
.ru
Центр дистанционного
Почему стоитобучения использовать
• Это покажетсярекурсию!вам совсем не сложным, как только вы попробуете это на практике.
• Рекурсивные программы часто более емкие, элегантные и их легче понять, чем их итеративные аналоги
• Некоторые проблемы легко решаются с помощью рекурсивных методов, причем гораздо проще, чем на итеративных.
online.mirea
.ru
Центр дистанционного
Пример Числаобучения Фибоначчи
• Числа Фибоначчи имеют невероятное количество свойств, которые используются в области Computer science.
• Есть даже целый журнал - The Fibonacci Quarterly, который существует с единственной целью - публикации теорем с участием чисел Фибоначчи.
F0 |
F1 |
F2 |
F3 |
F4 |
F5 |
F6 |
F7 |
… |
|
|
|
|
|
|
|
|
|
0 |
1 |
1 |
2 |
3 |
5 |
8 |
13 |
… |
|
|
|
|
|
|
|
|
|
online.mirea
.ru
Центр дистанционного
обучения
Пример Числа СвойстваФибоначчи:
1.Сумма квадратов двух последовательных чисел Фибоначчи также представляет из себя еще одно число Фибоначчи
2.Сумма первых “n” чисел Фибоначчи на единицу меньше,
чем Fn+2
•Поскольку числа Фибоначчи рекурсивно определяются, то напишем рекурсивную процедуру для расчета Fn, что представляется разумным в данном случае.
•Исходя из ранее сделанного утверждения, мы должны ожидать, что алгоритм будет гораздо более элегантным и лаконичным, чем эквивалентный повторяющийся ( обычный итерационный способ)
•Рассмотрим также итерационный способ!
Примеры программ на следующих слайдах….
online.mirea
.ru