Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Collatz
- * <Description>
- * Famous unsolved problem in number theory, known as the Collatz problem.
- * This program prints the number less than N(runtime argument) that has the
- * largest number of iterations through collatz(), and then prints that
- * number.
- *
- * <Usage>
- * %javac Collatz.java
- *
- * %java Collatz 3
- * Value of n for which n < N # of recursive calls for collatz(n) is maximized: 2
- * Value of # of recursive calls: 2
- *
- * java Collatz 7
- * Value of n for which n < N # of recursive calls for collatz(n) is maximized: 6
- * Value of # of recursive calls: 9
- *
- *
- * java Collatz 846
- * Value of n for which n < N # of recursive calls for collatz(n) is maximized: 703
- * Value of # of recursive calls: 171
- *
- * <References>
- * CIS201-L UAB SUMMER 2014 Dr. Sloan
- * http://introcs.cs.princeton.edu/java/23recursion/Collatz.java.html
- *
- * @author
- * Dan Latham <[email protected]>
- *
- * @version 0.0.1
- *
- */
- public class Collatz
- {
- public static int strip(String word)
- {
- int length = word.split(" ").length;
- return length;
- }
- public static String collatz(int n, String word)
- {
- if (n == 1) return word;
- else if (n % 2 == 0)
- {
- word = word+" "+n/2;
- //System.out.println(word);
- word = collatz(n / 2, word);
- }
- else
- {
- word = word+" "+(3*n+1);
- //System.out.println(word);
- word = collatz(3*n + 1, word);
- }
- return word;
- }
- public static void main(String[] args)
- {
- int n = Integer.parseInt(args[0])-1;
- int placeholder_n = n;
- int placeholder_length = 0;
- String word = "";
- while (n > 1)
- {
- word = collatz(n, String.format("%s", n));
- //DEBUG System.out.println(word);
- int z = strip(word);
- if (z > placeholder_length)
- {
- placeholder_length = z;
- placeholder_n = n;
- }
- n -= 1;
- }
- //DEBUG System.out.println(word);
- System.out.println("Value of n for which n < N # of recursive ca"+
- "lls for collatz(n) is maximized: "+
- placeholder_n);
- System.out.println("Value of # of recursive calls: "+
- placeholder_length);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment