Collections
Chapter2:Recursion
-- Printing odd or even number with recursion:
public static void odd(int a, int b) {
if (a == b) return;
if (a % 2 == 1)
System.out.println(a);
odd(++a, b);
}
15.How to write recursion in 3 steps?
package org.example.recursion;
public class Main {
public static void main(String[] args) {
System.out.println(factorial1(5));
System.out.println(factorial2(5));
System.out.println(factorial3(5));
}
public static Integer factorial1(Integer n) {
return n == 0 ? 1 : n * factorial1(n - 1);
}
public static Integer factorial2(Integer n) {
return n < 0 ? -1 : n == 0 ? 1 : n * factorial2(n - 1);
}
public static Integer factorial3(Integer n) {
if (n < 0) return -1;
if (n == 0 || n == 1) return 1;
return n * factorial3(n - 1);
}
}
16.Fibonacci using recursion
package org.example.recursion;
public class Main {
public static void main(String[] args) {
System.out.println(fibonacci(7));
}
public static int fibonacci(int n) {
if (n < 0) return -1;
if (n == 0 || n == 1) return n;
return fibonacci(n - 1) + fibonacci(n - 2);
}
}
18.Question 1 - Sum of digits
package org.example.recursion;
public class Main {
public static void main(String[] args) {
System.out.println(sumOfDigits(123));
}
public static Integer sumOfDigits(Integer n) {
if (n == 0 || n < 0) return 0;
return n % 10 + sumOfDigits(n / 10);
}
}
19.Question 2 - Power
package org.example.recursion;
public class Main {
public static void main(String[] args) {
System.out.println(power(3, 4));
}
public static Integer power(Integer number, Integer power) {
if (power < 1) return 1;
if (number < 1) return -1;
return number * power(number, --power);
}
}
20.Question 3 - GCD(Greatest Common Divisor)
-- Euclidian algorithm
package org.example.recursion;
public class Main {
public static void main(String[] args) {
System.out.println(gcd(48, 12));
}
public static Integer gcd(Integer a, Integer b) {
if (a < 0 || b < 0) return -1;
if (b == 0) return a;
return gcd(b, a % b);
}
}
-- Euclidian algorithm without recursion
package org.example.recursion;
public class Main {
public static void main(String[] args) {
System.out.println(gcd2(12, 33));
}
public static Integer gcd(Integer a, Integer b) {
if (a > b) {
a += b;
b = a - b;
a = a - b;
}
int remainder = b % a;
while (remainder != 0) {
b = a;
a = remainder;
remainder = b % a;
}
return a;
}
public static Integer gcd2(Integer a, Integer b) {
if (b > a) {
a += b;
b = a - b;
a = a - b;
}
while (b != 0) {
int remainder = a % b;
a = b;
b = remainder;
}
return a;
}
}
21.Question4 - Decimal to Binary
public static Integer binaryRecursion(Integer n) {
if (n < 0) return null;
if (n == 0) return 0;
return (n % 2) + 10 * binaryRecursion(n / 2);
}
-----------------------------------------------------------------------------------------------------------------------------
1. Interface Iterable.
package org.example.part1;
import java.util.Iterator;
public class Counter implements Iterable<Integer> {
private int count;
public Counter(int count) {
this.count = count;
}
public Iterator<Integer> iterator() {
return new Iterator<Integer>() {
private int i = 0;
@Override
public boolean hasNext() {
return i < count;
}
@Override
public Integer next() {
i++;
return i;
}
@Override
public void remove() {
throw new UnsupportedOperationException();
}
};
}
}
package org.example;
import org.example.part1.Counter;
public class Main {
public static void main(String[] args) {
int total = 0;
for (int i : new Counter(3)) {
total += i;
}
System.out.println(total);
}
}
------------------------------------------------------------------------------------------------------------------------------
package az.etibarli.test8;
public class MyArrayList {
private String[] arr = new String[10];
int size = 0;
public void add(String element) {
ensureCapacity();
arr[size++] = element;
}
public void ensureCapacity() {
if (arr.length == size) { // full
String[] arr2 = new String[arr.length / 2 + arr.length];
for (int i = 0; i < arr.length; i++) {
arr2[i] = arr[i];
}
arr = arr2;
}
}
public String get(int i) {
return arr[i];
}
public int size() {
return size;
}
}
Комментарии
Отправить комментарий