Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# AlgorithmsAndDataStructures
Recursion
1. Написать программу по возведению числа в степень с помощью рекурсии.
2. Написать программу «Задача о рюкзаке» с помощью рекурсии.
21 changes: 21 additions & 0 deletions src/algorithmsAndDataStructures/Backpack.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package algorithmsAndDataStructures;

public class Backpack {
private Item[] item;

public Backpack(Item[] item) {
this.item = item;

}

public int put(int i, int weight) {
if (i < 0) {
return 0;
}
if (item[i].getWeight() > weight) {
return put(i - 1, weight);

} else return Math.max(put(i - 1, weight),
put(i - 1, weight - item[i].getWeight()) + item[i].getPrice());
}
}
19 changes: 19 additions & 0 deletions src/algorithmsAndDataStructures/Item.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package algorithmsAndDataStructures;

public class Item {
private int weight;
private int price;

public Item(int weight, int price) {
this.weight = weight;
this.price = price;
}

public int getWeight() {
return weight;
}

public int getPrice() {
return price;
}
}
55 changes: 53 additions & 2 deletions src/algorithmsAndDataStructures/Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,57 @@
public class Main {

public static void main(String[] args) {
// write your code here

doTask2();
// System.out.println(recursFib(5));
// System.out.println(recurs(5));
// System.out.println(doTask(5, -2));
// System.out.println(recTriangleNum(5));
}

public static double doTask1(double x, int y) {
if (y == 1) {
return x;
}
if (y == 0) {
return 1;
}
if (y < 0) {
return 1 / x * doTask1(x, ++y);
}
return doTask1((x * x), y - 1);
}

public static void doTask2() {
Item[] items = new Item[]{
new Item(5, 7),
new Item(10, 7),
new Item(3, 2)
};
Backpack backpack = new Backpack(items);
int sizeBag = 10;
System.out.println(backpack.put(items.length - 1, sizeBag));
}

public static int recurs(int n) {
if (n == 1) {
return n;
}
return recurs(n - 1) * n;
}

public static int recursFib(int n) {
if (n < 3) {
return 1;
}
return recursFib(n - 1) + recursFib(n - 2);
}

public static int recTriangleNum(int n) {
System.out.println(n);
if (n == 1) {
return 1;
}
return recTriangleNum(n - 1) + n;
}
}
}