这里讨论的是多项的加法,直接看下面的程序代码:

package chapter02;import java.util.Arrays;/* * 多项式加法(简单版) * A(x) = 2x^5 + 3x^4 + 0x^3 + 5x^2 + 4x^1 +1x^0 * B(x) =        3x^4 + 2x^3 + 1x^2 + 1x^1 + 2x^0 *  * A(x) + B(x) =  * C(x) = 2x^5 + 6x^5 + 2x^3 + 6x^2 + 5x^1 + 3x^0 *  * 采用一维数组保存,第一个元素保存多项式的最高次幂,后面依次保存每项的次数 * A(x) = [5, 2, 3, 0, 5, 4, 1] * B(x) = [3,    2, 1, 1, 2, 2] * A(x) + B(x) = * C(x) = [5, 2, 5, 1, 6, 6, 3] *  */public class CH02_08 {	public static void main(String[] args) {		//定义两个多项式的数组		int[] arr1 = {5, 2, 3, 0, 5, 4, 1};		int[] arr2 = {3,    2, 1, 1, 2, 2};				//输出两个多项式数组		System.out.println(Arrays.toString(arr1));		System.out.println(Arrays.toString(arr2));				//定义结果多项式的数组		int arrResultLen = arr1.length > arr2.length ? arr1.length:arr2.length;	//数组长度为拥有较多项的多项式的数组的长度		int[] arrResult = new int[arrResultLen];				//初始化arrResult		Arrays.fill(arrResult, 0);				//输出arrResult		System.out.println();		System.out.println(Arrays.toString(arrResult));				//开始计算多项式的加法		int[] bigArr = arr1.length == arrResultLen ? arr1:arr2;		//找出项较多的多项式数组		int[] smallArr = arr1.length == arrResultLen ? arr2:arr1;	//找出项较少的多项式数组		for(int bigLen = bigArr.length - 1, smallLen = smallArr.length - 1; bigLen >= 0; bigLen--, smallLen--){			//逆序数组进行计算,这样就可以实现项的幂一一对应			if(smallLen > 0){				//小的多项式数组的第0项只是表示最高次幂,对实际计算没有用处,这里只计算小的多项式数组第0项之后的值				arrResult[bigLen] = bigArr[bigLen] + smallArr[smallLen];			} else {				//再往前走,如果smallArr已经到达了第0项,则只把bigArr中相应的值直接保存到arrResult中				arrResult[bigLen] = bigArr[bigLen];			}		}				//输出结果多项式的数组		System.out.println();		System.out.println(Arrays.toString(arrResult));			}}

    执行结果如下:

[5, 2, 3, 0, 5, 4, 1][3, 2, 1, 1, 2, 2][0, 0, 0, 0, 0, 0, 0][5, 2, 5, 1, 6, 6, 3]