GGT.java

package ch.hslu.exercises.sw01.ex1;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public final class GGT {

    private GGT() {

    }

    private static final Logger LOG = LoggerFactory.getLogger(GGT.class);

    @SuppressWarnings({"FinalParameters", "ReassignedVariable"})
    public static int ggtIterativ1(int a, int b) {
        while (a != b) {
            LOG.info("ggtIterativ1 Schleifendurchlauf");
            if (a > b) {
                a = a - b;
            } else {
                b = b - a;
            }
        }
        return a;
    }

    @SuppressWarnings({"FinalParameters", "ReassignedVariable"})
    public static int ggtIterativ2(int a, int b) {
        while ((a != 0) && (b != 0)) {
            LOG.info("ggtIterativ2 Schleifendurchlauf");
            if (a > b) {
                a = a % b;
            } else {
                b = b % a;
            }
        }
        return (a + b); // Entweder a oder b ist 0!
    }

    public static int ggtRekursiv(final int a, final int b) {
        LOG.info("ggtRekursiv Aufruf");
        if (a > b) {
            return ggtRekursiv(a - b, b);
        } else {
            if (a < b) {
                return ggtRekursiv(a, b - a);
            } else {
                return a;
            }
        }
    }
}