/home/caleb/ASDV-Java/Semester 3/Assignments/MP3_Recursion_CalebFontenot/src/mp3_recursion_calebfontenot/BinaryToDecimal.java
package mp3_recursion_calebfontenot;


import java.util.Scanner;

/*
 * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
 * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
 */
/**
 *
 * @author caleb
 */
public class BinaryToDecimal {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        while (true) {
            System.out.print("Enter a binary number: ");
            String binary = input.nextLine();
            System.out.println(binary + " in decimal is " + binaryToDecimal(binary));
        }
    }

    public static int binaryToDecimal(String binaryString) {
        return binaryToDecimal(binaryString, 0, binaryString.length(), 0);
    }

    public static int binaryToDecimal(String binaryString, int low, int high, int value) {
        if (low == binaryString.length() - 1) {
            return value;
        }
        if (binaryString.charAt(low) == '1') {
            return binaryToDecimal(binaryString, ++low, --high, value += Math.pow(2, high));
        } else {
            return binaryToDecimal(binaryString, ++low, --high, value);
        }
    }
}