2015-04-01 35 views
0

我正在写分而治之算法,但我在递归调用时遇到了问题。它说,它无法找到符号方法乘法和变量M,E,男递归调用我的算法遇到问题

public class Multiply { 

    private static int randomInt(int size) { 
     int maxval = (1 << size) - 1; 
     return (int)(Math.random()*maxval); 
    } 



    public static int[] naive(int size, int x, int y) { 
     int[] result = new int[3]; 

     if (size == 1) { 
     result[0] = x*y; 
     } 

     else { 
     int m = size/2; 
     int a = x/2; 
     int b = x % (int)Math.pow(2,m); 
     int c = y/(int)Math.pow(2,m); 
     int d = y % (int)Math.pow(2,m); 
     int e = Multiply(a,c,m); 
     int f = Multiply(b,d,m); 
     int g = Multiply(b,c,m); 
     int h = Multiply(a,d,m); 
     } 
     return ((int)Math.pow(2,2*m)*e) + ((int)Math.pow(2,m)*(g+h)) + f; 

    } 

回答

1

尝试的Multiply.naive(x,y,z)代替Multiply(x,y,z)

+0

谢谢!这似乎工作,但我得到一个新的错误(/Multiply.java:27:不兼容的类型 发现:INT [] 必需:INT) – user2980566 2015-04-01 17:13:49

+0

该问题是在你的'返回'行。尝试:'result [0] =((int)...'然后'返回结果;' – Barett 2015-04-01 19:16:58