----------------------android培训、java培训、期待与您交流! ----------------------
import java.util.*;
import java.io.*;
/*
题目:
(x+a0)(x+a1)...(x+an-1) = x^n + bn-1x^n-1 + ... +b0用户输入a0,a1,...,an-1,求b0,b1,...,bn-1
*/
public class StatisticsPolynomialCoefficient
{
//声明数组存放多项式因此
static int [] arr;
static int [] b;
String s1="";
Scanner input = new Scanner(System.in);
//输入多项式因子
public void inputFactor()
{
sop("请输入要输入的整数因子个数");
do{
try {
String str = input.nextLine();
int x = Integer.parseInt(str);
if(x<=0){
System.out.println("您输入的不是一个正整数,请重新输入");
continue ;
}
arr = new int[x];
} catch (Exception e) {
System.out.println("您输入的不是一个整数,请重新输入");
continue;
}
break;
}while(true);
for(int i=0;i<arr.length;i++){
sop("请输入第"+(i+1)+"个数:");
try {
String str = input.nextLine();
arr[i] = Integer.parseInt(str);
}catch (Exception e) {
System.out.printf("您输入的不是一个整数");
i--;
continue;
}
if(i!=0)
{
s1+="*";
}
s1+="(x+"+arr[i]+")";
}
sop("多项式因子表现形式为:f(x)="+s1);
}
//多项式函数的系数递归求值。
private static int b(int n,int k)
{
/*
数组参数a为多项式因子(x+a[0])(x+a[1])...(x+a[n-1])
n代表多项式个数
n=1 1 b(1,0)=a[0]
n=2 1 b(2,1)=a[0]+a[1]=b(1,0)+a[1] b(2,0)=a[0]a[1]=b(1,0)*a[1]
n=3 1 b(3,2)=a[0]+a[1]+a[2]=b(2,1)+a[2] b(3,1)=a[0]a[1]+a[0]a[2]+a[1]a[2]=b(2,0)+b(2,1)*a[2] b(3,0)=a[0]a[1]a[2]=b(2,0)*a[2]
............... .....
n=n 1 b(n,n-1)=a[0]+...a[n-1]=b(n-1,n-2)+a[n-1] b(n,k)=b(n-1,k-1)+b(n-1,k)*a[n-1] .... b(n,0)=a[0]a[1]...a[n]=b(n-1,0)*a[n-1]
k表示多项式f(x)的k次幂
b(n,k)表示n次多项式的k次幂前的系数和
*/
if((n>0&&n<=arr.length)&&(k>=0&&k<arr.length)){
if(n==1) return arr[0];
if(k==0) return arr[n-1]*b(n-1,0);
else if(k==n-1) return arr[n-1]+b(n-1,n-2);
else return b(n-1,k)*arr[n-1]+b(n-1,k-1);
}
else{
sop("您输入的参数范围有误,不满足(0<n<=arr.length&&0<=k<arr.length)");
return -1;
}
}
//输出多项式展开后的系数表现形式
private void outputCoefficent()
{
String s2 ="多项式展开后系数表现形式为:f(x)=x^"+arr.length;
for(int i=arr.length-1;i>=0;i--)
{
if(i==0) s2+="+"+b(arr.length,i);
else if(i==1) s2+="+"+b(arr.length,i)+"*x";
else s2+="+"+b(arr.length,i)+"*x^"+i;
}
sop(s2);
}
public static void sop(Object obj)
{
System.out.println(obj);
}
public static void main(String [] args)
{
StatisticsPolynomialCoefficient spc = new StatisticsPolynomialCoefficient();
spc.inputFactor();
spc.outputCoefficent();
}
}
运行结果:
---------------------- android培训、java培训、期待与您交流! ----------------------
详细请查看:http://edu.youkuaiyun.com/heima