// Binomial Expansions
String the_x, the_y;
System.out.println("Binomial Expansions:");
for(int i=0; i<=max; i++){
num = 1;
r = i+1;
xpow=i;
ypow=0;
System.out.print("(x + y)^"+i+" = ");
if(i==0) System.out.print("1");
for(int j=0; j<=i; j++){
if(j>0){
num = num*(r-j)/j;
System.out.print("x^"+(xpow+1)+" + ");
System.out.print(num+"x^"+xpow+"y^"+ypow);
}
xpow--;
ypow++;
}
System.out.println();
} // End of binomial expansions
关于我的代码我几乎没有问题。
我怎么能不打印0和1?有什么建议的方法可以在权力为0或1时摆脱^
吗?
我打印x
两次的原因是我希望x位于y之前,就像这样(x + y)^5 = x^5 + 5x^4y + 10x^3y^2 + 10x^2y^3 + 5xy^4 + y^5
但是,如果我不打印x两次,我的结果看起来像这个(x + y)^5 = x^5 + 5y^1x^4 + 10y^2x^3 + 10y^3x^2 + 5y^4x^1 + 1y^5
。我该怎么办?
我认为我的标题和标签不合适,我有什么样的麻烦,我以后可以搜索?
我看到的是DecimalFormat
和TypeCast
,但我不认为这两种情况都不适用。提前致谢
答案 0 :(得分:1)
试试这个。
static String power(String v, int p) {
switch (p) {
case 0: return "1";
case 1: return v;
default: return v + "^" + p;
}
}
static String mult(int k, String... terms) {
if (k == 0)
return "0";
String r = "" + k;
for (String t : terms) {
if (t.equals("0"))
return "0";
else if (t.equals("1"))
continue;
else if (r.equals("1"))
r = t;
else
r += t;
}
return r;
}
static void biominal(int max) {
System.out.println("Binomial Expansions:");
for (int i = 0; i <= max; i++) {
int num = 1;
int r = i + 1;
System.out.print("(x + y)^" + i + " = ");
System.out.print(power("x", i));
for (int j = 1; j <= i; j++) {
num = num * (r - j) / j;
System.out.print(" + " + mult(num, power("x", i - j), power("y", j)));
}
System.out.println();
}
}
和
biominal(5);
结果:
Binomial Expansions:
(x + y)^0 = 1
(x + y)^1 = x + y
(x + y)^2 = x^2 + 2xy + y^2
(x + y)^3 = x^3 + 3x^2y + 3xy^2 + y^3
(x + y)^4 = x^4 + 4x^3y + 6x^2y^2 + 4xy^3 + y^4
(x + y)^5 = x^5 + 5x^4y + 10x^3y^2 + 10x^2y^3 + 5xy^4 + y^5