2016-12-05 138 views
0

我想编程一个递归horner sheme。 目前它输出正确的数字,但顺序错误(颠倒)。 但是输出应该是开始的。 任何提示?递归horner计划java

public class uhs { 
    public static void main (String[] args) { 

     int z = Integer.parseInt(args[0]); 
     int q = Integer.parseInt(args[1]); 
     hornerUmkehrungRekursiv(z, q); 
     System.out.println(""); 
    } 

    static int hornerUmkehrungRekursiv(int z, int q) { 
     if (z == 0) { 
      return 0; 
     } else { 
      System.out.print(z % q); 
      return (hornerUmkehrungRekursiv(z/q, q) * 2) + z % q; 
     } 
    } 
} 
+0

您能否添加您正在传递的命令行参数的示例 –

+0

Z:要转换的十进制数 – dino1995

+0

q =要转换为q的基址 – dino1995

回答

0

如果您不能使用StringBuilder变量,那么你需要改变你的代码,以便它使递归调用,直到最后的分工,然后它打印余数。你只需要改变你的代码了一下,这里是它如何工作的一个示例:

public class uhs { 
    public static void main(String[] args) { 
     int z = Integer.parseInt(args[0]); 
     int q = Integer.parseInt(args[1]); 
     System.out.println(hornerUmkehrungRekursiv(z, q)); 
    } 

    static int hornerUmkehrungRekursiv(int z, int q) { 
     if (z/q != 0) { 
      System.out.print(hornerUmkehrungRekursiv(z/q, q)); 
     } 
     return z % q; 
    } 
} 
+0

谢谢你的答案:)但在练习中,我们已经给出了你不应该使用存储程序结果的变量。任何想法如何编写它没有存储字符串的变量? – dino1995

+0

感谢您的回答和解决方案。现在它的作品应该如何:) – dino1995

0

您需要的递归调用后执行打印:

static int hornerUmkehrungRekursiv(int z, int q) { 
    if (z == 0) { 
     return 0; 
    } else { 
     int v = z % q; 
     int r = (hornerUmkehrungRekursiv(z/q, q) * 2) + v; 
     System.out.print(v); 
     return r; 
    } 
} 

,让你的预期结果“11010010”。