GrayCode.java


Below is the syntax highlighted version of GrayCode.java from §2.3 Recursion.


/*************************************************************************
 *  Compilation:  javac GrayCode.java
 *  Execution:    java GrayCode N
 *  
 *  Print the N-bit binary reflected Gray code using recursion.
 *
 *  % java GrayCode 3
 *  000 
 *  001
 *  011
 *  010
 *  110 
 *  111
 *  101
 *  100
 *
 *************************************************************************/

public class GrayCode {

    // append reverse of order n gray code to prefix string, and print
    public static void yarg(String prefix, int n) {
        if (n == 0) System.out.println(prefix);
        else {
            gray(prefix + "1", n - 1);
            yarg(prefix + "0", n - 1);
        }
    }  

    // append order n gray code to end of prefix string, and print
    public static void gray(String prefix, int n) {
        if (n == 0) System.out.println(prefix);
        else {
            gray(prefix + "0", n - 1);
            yarg(prefix + "1", n - 1);
        }
    }  


    public static void main(String[] args) {
        int N = Integer.parseInt(args[0]);
        gray("", N);
    }

}



Copyright © 2000–2011, Robert Sedgewick and Kevin Wayne.
Last updated: Fri Aug 5 12:25:48 EDT 2011.