# 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) */.