# Recursive base conversion

Base conversion is no longer tested on the AP CS A Exam. This exercise remains available as practice with recursion.

This practice problem includes algorithms to convert between base 10 and another base. Base 2 is used as the other base; however, the algorithms work for conversion between base 10 and any other base.

## Part (a): Base 10 to base 2

To convert a number from decimal (base 10) into another base: Divide the number to be converted by the desired base. Keep both the quotient and the remainider. Continue dividing until the quotient is 0. Read the remainders from bottom to top.

### Example 1 from base 10

`12` in base 10 is __ in base 2.

``````12 / 2 = 6 R0
6 / 2 = 3 R0
3 / 2 = 1 R1
1 / 2 = 0 R1
``````

`12` in base 10 is `1100` in base 2

### Example 2 from base 10

`34` in base 10 is __ in base 2.

``````34 / 2 = 17 R0
17 / 2 = 8  R1
8 / 2 = 4  R0
4 / 2 = 2  R0
2 / 2 = 1  R0
1 / 2 = 0  R1
``````

`34` in base 10 is `100010` in base 2.

### `toBinary` method

Method `toBinary` recursively prints the binary (base 2) representation of `inBase10`. For example, `toBinary(12)` prints `1100`. `toBinary(34)` prints `100010`.

``````// Precondition: inBase10 >= 0
public static void toBinary(int inBase10)
{
if(inBase10 <= 1)
{
System.out.print(inBase10);
return;
}

/* to be completed in part (a) */
}
``````

Give code to replace `/* to be completed in part (a) */`.

## Part (b): Base 2 to base 10

Write the place value of each digit under each digit. The place value of the rightmost digit is the base to the 0 power. The place value of the digit 2nd from the right is the base to the power of 1. The pattern continues.

Multiply each digit by its place value. Add the results. The sum is the number in base 10.

### Example 1 to base 10

`11010` in base 2 is __ in base 10.

``````  1    1    0    1    0
2^4  2^3  2^2  2^1  2^0
16 +  8 +  0 +  2 +  0 = 26
``````

`11010` in base 2 is `26` in base 10

### Example 2 to base 10

`100010` in base 2 is __ in base 10.

``````  1    0    0    0    1    0
2^5  2^4  2^3  2^2  2^1  2^0
32 +  0 +  0 +  0 +  2 +  0 = 34
``````

`100010` in base 2 is `34` in base 10.

### `toDecimal` method

Method `toDecimal` recursively converts `inBase2` to an decimal (base 10) number and returns the decimal representation. For example, `toDecimal("11010")` returns `26`. `toDecimal("100010")` returns `34`.

``````// Precondition: inBase2.length() > 0
public static int toDecimal(String inBase2)
{
if(inBase2.length() == 0)
return 0;

/* to be completed in part (b) */
}
``````

Give code to replace `/* to be completed in part (b) */`.