/media/sda-magnetic/david/Dok-15-2023-11-27/fernuni-hagen/cs-i-ii/old-cs-2-03/java-new/2021-04-05/WunderProg.java


public class WunderProg {
    public static void main (String [] args) {
        Wunder_Test w = new Wunder_Test ();
        
        System.out.println ("Am meisten braucht die Zahl " + w.wunder_max (true) + " mit " + w.wunder_max (false) + " Schritten");
        w.wunder_rek_out (22);
    }

    public static class Wunder_Test {
        Wunder_Test () {}
        
        int wunder (int n) {
            int i = 0;
            while (n != 1) {
                if ((n % 2) == 0)
                    n = n / 2;
                else
                    n = (n * 3) + 1;
                i++;
            }
            return i;
        }
        
        int wunder_rek (int n) {
            if  (n == 1)
                return 0;
            else if ((n % 2) == 0)
                return 1 + this.wunder_rek (n/2);
            return 1 + this.wunder_rek (n*3+1);
        
        }

        int wunder_rek_out (int n) {
            System.out.println (n);
            if  (n == 1)
                return 0;
            else if ((n % 2) == 0)
                return 1 + this.wunder_rek_out (n/2);
            return 1 + this.wunder_rek_out (n*3+1);
        
        }

        
        int wunder_max (boolean flag) {
            int i;
            int imax = 0;
            int max;
            int tmp;
            
            max = -1;
            
            for (i = 1;  i < 100;  i++) {
                tmp = wunder (i);
                if (tmp > max) {
                    max = tmp;
                    imax = i;
                }
            }
            if (flag == true)
                return imax;
            return max;
        }
    }
}