2012-04-17 104 views
-3

我需要创建一个递归方法,它将第一个值(基数10)转换为第二个基数中的数字。这是我到目前为止,但由于某种原因,我无法让递归函数正常工作。谢谢。递归除法方法

package lab06250; 

import java.util.Scanner; 

public class Main { 

    public static void main(String[] args) { 
     Number newNumber; 
     newNumber = new Number(); 
     Scanner kbd = new Scanner(System.in); 
     int number; 
     int remainder = 0; 
     int base; 

     System.out.println("Enter number:"); 
     number = kbd.nextInt(); 
     System.out.println("Enter base"); 
     base = kbd.nextInt(); 
     kbd.nextLine(); 

    System.out.println(Division(number, base)); 

    } 
    public static int Division(int n, int b){ 
     int result; 
     if (n == 1) 
      result = 1; 
      else 
       result = Division(b, (n/b)); 

     return n; 
    } 

} 
+1

你的代码有什么问题?错误?不良行为?你需要告诉我们细节。 – 2012-04-17 03:54:12

+0

我的基本情况至少有一个错误。既然你分割整数,你最终会用'n == 0'而不是'n == 1'。 – bdares 2012-04-17 03:55:09

+0

嗯,当我试图运行我的程序时,它并没有给我正确的值。它会抛出我这个错误信息; – user1337740 2012-04-17 03:58:43

回答

1

首先,我认为这是在你的逻辑流,如果你想改变基础(这里的猜测数字系统)

工作如下:

11十进制(数字系统10 )然后

1*(power(10,1)) + 1*(power(10,0) 

及其等效二进制数(1 2基最高)

1*(power(2*3)) + 0*(power(2*2)) + 1*(power(2*1)) + 1*(power(2*0)) 

其辛烷值当量(7最高8个碱基)

1*(power(8*1)) + 3*(power(8*0)) 

你需要写在上面的基础的东西,纠正你的逻辑。只有一个建议使用%而不是分区,并尝试添加结果。

+0

谢谢,但我不想改变基地,这将保持改变。我想改变的是数字。 – user1337740 2012-04-17 04:33:17

+0

谢谢,我会试试。 – user1337740 2012-04-17 04:39:14