0

タイトルにあるように、Java で再帰的な手法を使用して 2 進数を 10 進数に変換しようとしていましたが、希望の出力が得られません。

   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);
           }
       }
   }     
4

2 に答える 2

1

問題は、spawn の結果を返さないか出力しないことです。

戻したい場合は、シフトやパワーが必要ですが、印刷したいです。

デバッガーでコードをステップ実行して、実行内容を確認することをお勧めします。

于 2013-09-18T14:41:25.787 に答える
0

ここに作業プログラムがあります。

パラメータは (バイナリ コード、コードのサイズ-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);  
}
于 2013-11-10T11:19:00.163 に答える