如何实现这三个函数呢?
第一个函数输入两个数组,返回商.
第二个函数输入两个数组,返回余数.
第三个函数输入两个数组,返回最大公约式.
a[] = {3,0,2,1}a=3+2X^2+X^3,这样来表示多项式,不用链表

解决方案 »

  1.   

    刚写好 只做了除法 简单测试可以通过 应该没啥大问题 你可以再测试下import java.util.Arrays;class Polyn{
    private double[] dividend;
    private double[] divisor;
    private double[] result;
    private double[] remainder;

    public Polyn(double[] dividend,double[] divisor){
    this.dividend=dividend;
    this.divisor=divisor;
    }
    public static double[] addPolyn(double[] a,double[] b){
    double[] heigher=a.length>b.length?a:b;
    double[] lower=a.length>b.length?b:a;
    double[] res=new double[heigher.length];
    for(int i=0;i<heigher.length;i++){
    if(i<lower.length){
    res[i]=heigher[i]+lower[i];
    }
    else{
    res[i]=heigher[i];
    }
    }
    return res;
    }
    public static double[] subPolyn(double[] a,double[] b){
    double[] heigher=a.length>=b.length?a:b;
    double[] lower=a.length>=b.length?b:a;
    double[] res=new double[heigher.length];
    if(heigher==a){
    for(int i=0;i<heigher.length;i++){
    if(i<lower.length){
    res[i]=heigher[i]-lower[i];
    }
    else{
    res[i]=heigher[i];
    }
    }
    }else{
    for(int i=0;i<heigher.length;i++){
    if(i<lower.length){
    res[i]=lower[i]-heigher[i];
    }
    else{
    res[i]=-heigher[i];
    }
    }
    }
    int k=res.length-1;
    for(;res[k]==0.0&&k>0;k--);
    double[] newres=new double[k+1];
    for(int m=0;m<newres.length;m++){
    newres[m]=res[m];
    }
    return newres;
    }
    public static double[] mulPolyn(double[] a,double[] b){
    double[] res=new double[a.length+b.length-1];
    for(int i=0;i<a.length;i++){
    for(int j=0;j<b.length;j++){
    res[i+j]+=a[i]*b[j];

    }
    }
    return res;
    }
    public void devPolyn(){
    if(dividend.length<divisor.length){
    result=new double[]{0};
    remainder=dividend;
    }else{
    double[] a=dividend;
    double[] b=divisor;
    double[] res=new double[]{0};
    while(a.length>=b.length){
    int num=a.length-b.length;
    double[] temp=new double[num+1];
    for(int i=0;i<num;i++){
    temp[i]=0;
    }
    temp[num]=a[a.length-1]/b[b.length-1];
    res=addPolyn(temp, res);
    double[] c=mulPolyn(b, temp);
    a=subPolyn(a, c);
    }
    remainder=a;
    result=res;
    }
    }
    public double[] getResult() {
    if(result==null){
    devPolyn();
    }
    return result;
    }
    public double[] getRemainder() {
    if(remainder==null){
    devPolyn();
    }
    return remainder;
    }
    }
    public class PolynTest {

    public static void main(String[] args) {
    double[] a={0,15,3};
    double[] b={0,3};
    Polyn p=new Polyn(a,b);
    System.out.println(Arrays.toString(p.getResult()));
    System.out.println(Arrays.toString(p.getRemainder()));
    }}