Разделы презентаций


Основы программирования (Java) ФИСТ 1 курс Власенко Олег Федосович

Содержание

Вычисление факториалаpublic class Main1 { public static long fuct(int n) { long res = 1; for(int i = 1; i

Слайды и текст этой презентации

Слайд 1Основы программирования (Java) ФИСТ 1 курс Власенко Олег Федосович
Лекция 6
Методы. Рекурсия

Основы программирования (Java) ФИСТ 1 курс Власенко  Олег  ФедосовичЛекция 6Методы. Рекурсия

Слайд 2Вычисление факториала
public class Main1 {

public static long fuct(int n) {
long

res = 1;
for(int i = 1; i

{
res *= i;
}
return res;
}

public static void main(String[] args) {

int n = 4;
long f = fuct(n);

System.out.println(n + "! = " + f);

}
}
Вычисление факториалаpublic class Main1 {	public static long fuct(int n) {		long res = 1;		for(int i = 1; i

Слайд 3Вычисление факториала - рекурсия
public class Main1 {

private static long fuct2(int

n) {

if (n == 0) {
return 1;
}

long res = fuct2(n

- 1) * n;
return res;
}

public static void main(String[] args) {
int n = 4;
long f = fuct2(n);
System.out.println(n + "! = " + f);
}
}
Вычисление факториала - рекурсияpublic class Main1 {	private static long fuct2(int n) {		if (n == 0) {			return 1;		}		long

Слайд 4Трассировка
Трассировка итерационной реализации
Трассировка рекурсивной реализации
3) Ручная трассировка итерации
4) Ручная трассировка

рекурсии

ТрассировкаТрассировка итерационной реализацииТрассировка рекурсивной реализации3) Ручная трассировка итерации4) Ручная трассировка рекурсии

Слайд 5Рекурсия – загадка 1
public class Main2 {

public static void main(String[]

args) {
rec1(3);
}


public static void rec1(int n) {
System.out.print(" " + n);
if

(n > 1) {
rec1(n - 1);
}
}
}

Что будет выведено?


Слайд 6Рекурсия – загадка 2
public class Main2 {

public static void main(String[]

args) {
rec1(3);
}


public static void rec1(int n) {
if (n > 1)

{
rec1(n - 1);
}
System.out.print(" " + n);
}
}

Что будет выведено?

Рекурсия – загадка 2public class Main2 {	public static void main(String[] args) {		rec1(3);	}	public static void rec1(int n) {		if

Слайд 7Рекурсия – загадка 3
public class Main2 {

public static void main(String[]

args) {
rec1(3);
}


public static void rec1(int n) {
System.out.print(" " + n);
if

(n > 1) {
rec1(n - 1);
}
System.out.print(" " + n);
}
}

Что будет выведено?


Слайд 8Рекурсия – загадка 4
public class Main2 {

public static void main(String[]

args) {
rec2(4);
}

public static void rec2(int n) {

if (n >= 1)

{
System.out.print(" " + n);
rec2(n - 1);
}

}
}

Что будет выведено?

Рекурсия – загадка 4public class Main2 {	public static void main(String[] args) {		rec2(4);	}	public static void rec2(int n) {		if

Слайд 9Рекурсия – загадка 5
public class Main2 {

public static void main(String[]

args) {
rec2(3);
}

public static void rec2(int n) {

if (n >= 1)

{
System.out.print(" " + n);
rec2(n - 1);
rec2(n - 1);
}

}
}

Что будет выведено?

Рекурсия – загадка 5public class Main2 {	public static void main(String[] args) {		rec2(3);	}	public static void rec2(int n) {		if

Слайд 10Рекурсия – загадка 6
public class Main2 {

public static void main(String[]

args) {
rec2(3);
}

public static void rec2(int n) {

if (n >= 1)

{
System.out.print(" " + n);
rec2(n - 1);
rec2(n - 1);
System.out.print(" " + n);
}
}
}

Что будет выведено?

Рекурсия – загадка 6public class Main2 {	public static void main(String[] args) {		rec2(3);	}	public static void rec2(int n) {		if

Слайд 11Рекурсия – загадка 7 (ЕГЭ 2017 Демо)

public class Main2 {

public

static void main(String[] args) {
F(10);
}

static void F(int n) {
if (n

> 2) {
System.out.printf("%d\n", n);
F(n - 3);
F(n - 4);
}
}
}

Задача 11: Чему равна сумма напечатанных на экране чисел при выполнении вызова F(10)?

Рекурсия – загадка 7 (ЕГЭ 2017 Демо)public class Main2 {	public static void main(String[] args) {		F(10);	}	static void F(int

Слайд 12Рекурсия – загадка 8 (ЕГЭ 2015 Демо)
public class Main2 {

public

static void main(String[] args) {
F(1);
}

static void F(int n)
{
System.out.printf("%d\n", n);
if (n

< 5) {
F(n + 1);
F(n + 3);
}
}
}

Задача 11: Чему равна сумма всех чисел, напечатанных на экране при выполнении вызова F(1)?

Рекурсия – загадка 8 (ЕГЭ 2015 Демо)public class Main2 {	public static void main(String[] args) {		F(1);	}	static void F(int

Слайд 13Рекурсия – загадка 9 (ЕГЭ 2016 Демо)
public class Main2 {
public

static void main(String[] args) {
F(11);
}

static void F(int n){
if (n >

0)
G(n - 1);
}

static void G(int n){
System.out.printf("*");
if (n > 1)
F(n - 3);
}
}

Задача 11: записаны две рекурсивные функции : F и G. Сколько символов «звёздочка» будет напечатано на экране при выполнении вызова F(11)?


Слайд 14Вычисление чисел Фибоначчи
public class Main3 {
public static void main(String[]

args) {
System.out.println(fib(6));
}
public static int fib(int n) {
if (n

{
return 1;
} else {
int s = 0;
int f1 = 1;
int f2 = 1;
for(int i = 2; i < n; i++) {
s = f1 + f2;
f1 = f2;
f2 = s;
}
return s;
}
}
}
Вычисление чисел Фибоначчи public class Main3 {	public static void main(String[] args) {		System.out.println(fib(6));	}	public static int fib(int n) {		if

Слайд 15Вычисление чисел Фибоначчи (рекурсия)
public class Main3 {

public static void

main(String[] args) {
System.out.println(fib2(6));

}

public static int fib2(int n) {

if (n

2) {
return 1;
} else {
return fib2(n - 1) + fib2(n - 2);
}

}
}
Вычисление чисел Фибоначчи (рекурсия) public class Main3 {	public static void main(String[] args) {		System.out.println(fib2(6));	}	public static int fib2(int n)

Слайд 16Метод для рисования треугольника
Создать приложение, в котором на панели рисуется

1 треугольник

Метод для рисования треугольникаСоздать приложение, в котором на панели рисуется 1 треугольник

Слайд 17Метод для рисования треугольника (код)
public class MyPanel3 extends JPanel {

private

void drawTriangle(Graphics g,
int cx, int cy, int size) {
int

x1 = cx;
int y1 = cy - size;
int x2 = cx - size;
int y2 = cy + size;
int x3 = cx + size;
int y3 = cy + size;
g.setColor(Color.RED);
g.drawLine(x1, y1, x2, y2);
g.drawLine(x2, y2, x3, y3);
g.drawLine(x3, y3, x1, y1);
}

@Override
public void paint(Graphics g) {
super.paint(g);
drawTriangle(g, 100, 100, 50);
}
}
Метод для рисования треугольника (код)public class MyPanel3 extends JPanel {		private void drawTriangle(Graphics g, 			int cx, int cy,

Слайд 18Рекурсивный метод для рисования треугольника
Создать приложение, в котором на панели

рисуется рекурсивный треугольник

Рекурсивный метод для рисования треугольникаСоздать приложение, в котором на панели рисуется рекурсивный треугольник

Слайд 19Код рекурсивного метода
public class MyPanel3 extends JPanel {
...

private void triangleRec(Graphics

g,
int cx, int cy, int size) {

drawTriangle(g, cx, cy,

size);

if (size < 4) {
return;
}
triangleRec(g, cx, cy - size, size / 2);
}

@Override
public void paint(Graphics g) {
super.paint(g);
triangleRec(g, 100, 100, 50);
}
}
Код рекурсивного методаpublic class MyPanel3 extends JPanel {	...		private void triangleRec(Graphics g, 			int cx, int cy, int size)

Слайд 20Рекурсивный метод для рисования треугольника
Создать приложение, в котором на панели

рисуется рекурсивный треугольник

Рекурсивный метод для рисования треугольникаСоздать приложение, в котором на панели рисуется рекурсивный треугольник

Слайд 21Код рекурсивного метода
public class MyPanel3 extends JPanel {
...

private void triangleRec(Graphics

g,
int cx, int cy, int size) {
drawTriangle(g, cx, cy,

size);

if (size < 4) {
return;
}
triangleRec(g, cx, cy - size, size / 2);
triangleRec(g, cx - size, cy + size, size / 2);
triangleRec(g, cx + size, cy + size, size / 2);
}

@Override
public void paint(Graphics g) {
super.paint(g);
triangleRec(g, 100, 100, 50);
}
}
Код рекурсивного методаpublic class MyPanel3 extends JPanel {	...			private void triangleRec(Graphics g, 			int cx, int cy, int size)

Слайд 22Метод для рисования квадрата
Создать приложение, в котором на панели рисуется

1 квадрат

Метод для рисования квадратаСоздать приложение, в котором на панели рисуется 1 квадрат

Слайд 23Метод для рисования квадрата (код)
public class MyPanel3 extends JPanel {

private

static void drawSquare(Graphics g,
int cx, int cy, int size){
int

x1 = cx - size;
int y1 = cy - size;
int width = size * 2;
int height = size * 2;

g.setColor(Color.BLUE);
g.drawRect(x1, y1, width, height);
}

@Override
public void paint(Graphics g) {
super.paint(g);
drawSquare(g, 100, 100, 50);
}
}
Метод для рисования квадрата (код)public class MyPanel3 extends JPanel {		private static void drawSquare(Graphics g, 			int cx, int

Слайд 24Рекурсивный метод для рисования квадрата
Создать приложение, в котором на панели

рисуется рекурсивный квадрат

Рекурсивный метод для рисования квадратаСоздать приложение, в котором на панели рисуется рекурсивный квадрат

Слайд 25Метод для рисования квадрата (код)
public class MyPanel3 extends JPanel {
...

private

void squareRec(Graphics g,
int cx, int cy, int size) {
drawSquare(g,

cx, cy, size);

if (size < 4) {
return;
}
squareRec(g, cx, cy - size, size / 2);
}

@Override
public void paint(Graphics g) {
super.paint(g);
squareRec(g, 100, 100, 50);
}
}
Метод для рисования квадрата (код)public class MyPanel3 extends JPanel {		...	private void squareRec(Graphics g, 			int cx, int cy,

Слайд 26Рекурсивный метод для рисования квадрата
Создать приложение, в котором на панели

рисуется рекурсивный квадрат

Рекурсивный метод для рисования квадратаСоздать приложение, в котором на панели рисуется рекурсивный квадрат

Слайд 27Метод для рисования квадрата (код)
public class MyPanel3 extends JPanel {
...
private

void squareRec(Graphics g,
int cx, int cy, int size) {
drawSquare(g,

cx, cy, size);

if (size < 4) {
return;
}
squareRec(g, cx, cy - size, size / 2);
squareRec(g, cx, cy + size, size / 2);
squareRec(g, cx - size, cy, size / 2);
squareRec(g, cx + size, cy, size / 2);
}

@Override
public void paint(Graphics g) {
super.paint(g);
squareRec(g, 100, 100, 50);
}
}
Метод для рисования квадрата (код)public class MyPanel3 extends JPanel {		...		private void squareRec(Graphics g, 			int cx, int cy,

Слайд 28Рекурсивный метод для рисования квадрата
Создать приложение, в котором на панели

рисуется рекурсивный квадрат

Рекурсивный метод для рисования квадратаСоздать приложение, в котором на панели рисуется рекурсивный квадрат

Слайд 29Метод для рисования квадрата (код)
public class MyPanel3 extends JPanel {
...
private

void squareRec(Graphics g,
int cx, int cy, int size) {
drawSquare(g,

cx, cy, size);

if (size < 10) {
return;
}
squareRec(g, cx, cy - size, size / 2);
squareRec(g, cx, cy + size, size / 2);
squareRec(g, cx - size, cy, size / 2);
squareRec(g, cx + size, cy, size / 2);
}

@Override
public void paint(Graphics g) {
super.paint(g);
squareRec(g, 100, 100, 50);
}
}
Метод для рисования квадрата (код)public class MyPanel3 extends JPanel {		...		private void squareRec(Graphics g, 			int cx, int cy,

Слайд 30Косвенная рекурсия
Создать приложение, в котором на панели рисуется рекурсивный квадрат,

созданный из рекурсивных треугольников, которые созданы из квадратов и т.д.

Косвенная рекурсияСоздать приложение, в котором на панели рисуется рекурсивный квадрат, созданный из рекурсивных треугольников, которые созданы из

Слайд 31Код
private void triangleRec2(Graphics g,
int cx, int cy, int size)

{
drawTriangle(g, cx, cy, size);
if (size < 4) {
return;
}
squareRec2(g, cx, cy

- size, size / 2);
squareRec2(g, cx - size, cy + size, size / 2);
squareRec2(g, cx + size, cy + size, size / 2);
}

private void squareRec2(Graphics g,
int cx, int cy, int size) {
drawSquare(g, cx, cy, size);
if (size < 10) {
return;
}
triangleRec2(g, cx, cy - size, size / 2);
triangleRec2(g, cx, cy + size, size / 2);
triangleRec2(g, cx - size, cy, size / 2);
triangleRec2(g, cx + size, cy, size / 2);
}
Кодprivate void triangleRec2(Graphics g, 		int cx, int cy, int size) {	drawTriangle(g, cx, cy, size);	if (size < 4)

Слайд 32Косвенная рекурсия (примеры)

Косвенная рекурсия (примеры)

Слайд 33Домашнее задание
Делайте лабы!
Начинайте делать курсовую работу
Решить загадки 1-9

Домашнее заданиеДелайте лабы!Начинайте делать курсовую работуРешить загадки 1-9

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика