logo Practice-It logo

printTwos

Language/Type: Java recursion recursive programming
Author: Stuart Reges (on 2014/02/13)

Write a method printTwos that takes an integer n as a parameter and that prints an expression composed of a single odd number multiplied by twos that is equal to n. The twos should surround the odd number with an equal number of twos on either side if possible. For example, the call:

    printTwos(80);

should produce the following output:

    2 * 2 * 5 * 2 * 2

If the expression has an odd number of twos, then the "extra" two should appear at the front of the expression. For example, the call:

    printTwos(96);

should produce the following output:

    2 * 2 * 2 * 3 * 2 * 2

If the number is odd to begin with, it should simply be printed. It is possible that the odd number to print will be 1. For example, the following calls:

        
    printTwos(1);
    System.out.println(); // to complete the line of output
    printTwos(2);
    System.out.println(); // to complete the line of output
    printTwos(32);
    System.out.println(); // to complete the line of output

should produce the following output:

    1
    2 * 1
    2 * 2 * 2 * 1 * 2 * 2

You must exactly reproduce the format of the examples above. Your method should throw an IllegalArgumentException if passed a value less than 1.

You may NOT use a while loop, for loop or do/while loop to solve this problem; you must use recursion.

Write your solution to printTwos below.

Type your solution here:


This is a method problem. Write a Java method as described. Do not write a complete program or class; just the method(s) above.

You must log in before you can solve this problem.


Log In

If you do not understand how to solve a problem or why your solution doesn't work, please contact your TA or instructor.
If something seems wrong with the site (errors, slow performance, incorrect problems/tests, etc.), please

Is there a problem? Contact a site administrator.