2012-04-17 138 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