Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用递归技术实现二进制数到十进制数的转换_Java_Recursion_Binary_Decimal - Fatal编程技术网

Java 用递归技术实现二进制数到十进制数的转换

Java 用递归技术实现二进制数到十进制数的转换,java,recursion,binary,decimal,Java,Recursion,Binary,Decimal,正如标题所说,我试图在java中使用递归技术将二进制转换为十进制,但我无法获得所需的输出 这就是我所做的 public class deci { public static void main(String args[]){ hexa s1=new deci(); s1.spawn(11000); } void spawn(int a){ int p=0;int x=0;int k=

正如标题所说,我试图在java中使用递归技术将二进制转换为十进制,但我无法获得所需的输出 这就是我所做的

   public class deci {
       public static void main(String args[]){
           hexa s1=new deci();
           s1.spawn(11000);
       }
       void spawn(int a){
           int p=0;int x=0;int k=0;
           if(a>0){
               p=a%10;
               x=x+p*(int)Math.pow(2,k);
               k++;
               spawn(a/10);
           } else {
               System.out.print(x);
           }
       }
   }     

问题是您没有使用spawn的结果,或者返回或打印它

如果你想退回它,你需要换档或动力,但你想打印它


我建议您在调试器中单步执行代码,以便查看它正在执行的操作。

这是一个工作程序

参数为(二进制代码,代码大小为-1),例如,对于(111,2),这将返回7

int binaryToDecimal(int binary,int size){  
  if(binary==0) return 0;        
  return binary%10*(int)Math.pow(2,size)+binaryToDecimal((int)binary/10,size-1);  
}

期望的输出是什么?你得到了什么输出?努力吧,伙计。我得到的是00110而不是12。那么这段代码到底有什么问题呢?好吧,你没有把k的值传递给任何地方,所以它总是0。@Sigma我不会为你写出代码,但我可以帮你。我已经提到你增加了“k”,但从来没有用它做过任何事情。