public class BinarioDecimal{
public static void main(String []args){
int[] binaryNumbers = {1,1,1,0};
String binary = "1110";
int result = 0;
/* recursivo*/
for(int i = binaryNumbers.length-1, j = 0; i >= 0; --i, ++j){
/* Calcular solo si es 1*/
if(binaryNumbers[i] == 1){
result += Math.pow(2, j);
}
}
System.out.println(result);
System.out.println("Recursivo " + binaryRecursive(binary));
}
public static int binaryRecursive(String arr){
if(arr.isEmpty())
return 0;
/* La base para salir de la recursion*/
/* Si solo tenemos un solo numero binario y es uno, devolvemos uno
* de lo contrario devolvemos 0 */
if(arr.length() == 1){
if(arr.charAt(0) == '1')
return 1;
else
return 0;
}
/* Si la cadena binaria es mayor a 1, lo reducimos
* y calculamos el valor decimal en ese momento */
return binaryRecursive(arr.substring(1)) + (int)Math.pow(2 * Character.getNumericValue(arr.charAt(0)), arr.length()-1);
}
}