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;
}
}

















Комментарии

Популярные сообщения из этого блога

IoC:ApplicationContext, BeanFactory. Bean

Lesson1: JDK, JVM, JRE

Lesson_2: Operations in Java