java多项式求解,杨辉三角

img


java基础练习,要求代码,凑字数,满足以上要求,凑字数,再来凑字数,继续凑字数

急需

import java.util.Arrays;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int a=sc.nextInt();
        int b=sc.nextInt();
        int n=sc.nextInt();
        Yanghui yanghui=new Yanghui(a,b,n);
        int[] arr1=new int[n+1];
        int[] arr2= yanghui.getarrN();
        for(int i=0;i<=n;i++){
            arr1[i]=com(n,i);
        }
        boolean issame=true;
        for(int i=0;i<=n;i++){
            if(arr1[i]!=arr2[i]){
                issame=false;
            }
        }
        yanghui.printarr();
        String str= Arrays.toString(arr1);
        System.out.println("二项式展开:       "+str);
        str=Arrays.toString(arr2);
        System.out.println("杨辉三角第"+n+"行系数:"+str);
        if(issame){
            System.out.println("杨辉三角第"+n+"行系数与二项式展开相同");
        }
        else {
            System.out.println("杨辉三角第"+n+"行系数与二项式展开不同");
        }
        System.out.println("输入 x  n");
        int x=sc.nextInt();
        n=sc.nextInt();
        System.out.println("x^n = "+yanghui.pow(x,n));
    }
    static int com(int n,int m){    //计算二项式系数
        int ret=1;
        for(int i=0;i<m;i++){
            ret*=n;
            n--;
        }
        for(int i=m;i>1;i--){
            ret/=i;
        }
        return ret;
    }
}

class Yanghui{
    private int a,b,n;
    private int[][] arr;
    public int getA() {
        return a;
    }

    public void setA(int a) {
        this.a = a;
    }

    public int getB() {
        return b;
    }

    public void setB(int b) {
        this.b = b;
    }

    public int getN() {
        return n;
    }

    public void setN(int n) {
        this.n = n;
    }

    public int[][] getArr() {
        return arr;
    }

    public void setArr(int[][] arr) {
        this.arr = arr;
    }
    public int pow(int x,int n){    //计算x^n
        if(n==0){
            return 1;
        }
        else if(n%2==0){
            return pow(x*x,n/2);
        }
        else{
            return pow(x*x,n/2)*x;
        }
    }
    public Yanghui(int a, int b, int n) {
        this.a = a;
        this.b = b;
        this.n = n;
        arr=new int[n+1][n+1];
        for(int i=0;i<n;i++){
            arr[i][0]=1;
        }
        for(int i=1;i<n;i++){
            for(int j=1;j<=i;j++){
                arr[i][j]=arr[i-1][j-1]+arr[i-1][j];
            }
        }
    }
    public int[] getarrN(){     //返回第n行系数
        int[] ret=new int[n+1];
        ret[0]=1;
        for(int i=1;i<=n;i++){
            ret[i]=arr[n-1][i-1]+arr[n-1][i];
        }
        return ret;
    }
    public void printarr(){     //打印前n行
        for(int i=0;i<n;i++){
            for(int j=0;j<=i;j++){
                System.out.print(arr[i][j]+" ");
            }
            System.out.println();
        }
    }
}

作业自己写为妙


package com.ajieyao.modules;

import java.util.Arrays;

public class Demo {

    public static void main(String[] args) {
        Yang yang = new Yang(3,4,5);
        yang.printTriangle();
        System.out.println(yang.caculat());
        yang.expandString();
        int i = yang.expandCaculate();
        System.out.println(i);
    }
    static class Yang{
        private int a,b,n;
        private int[][] arr;
        public Yang() {
        }
        public Yang(int a, int b, int n) {
            this.a = a;
            this.b = b;
            this.n = n;
            this.arr = getTriangle(n);
        }
        private double caculat(){
            return Math.pow(a+b, n);
        }
        private void printTriangle(){
            for (int i = 0; i < this.arr.length; i++) {
                System.out.println(Arrays.toString(this.arr[i]));
            }
        }
        private int[][] getTriangle(int n)  {
            int[][] array = new int[n+1][];
            for (int i = 0; i < array.length; i++) {
                array[i] = getNextRow(i);
            }
            return array;
        }
        private int[] getNextRow(int n)  {
            if(n == 0){
                int[] a = {1};
                return a;
            }
            if(n == 1){
                int[] a = {1,1};
                return a;
            }
            if(n == 2){
                int[] a = {1,2,1};
                return a;
            }
            int[] row = getNextRow(n-1);
            int[] ints = new int[row.length + 1];
            //第一个数字不需要计算 就取1
            ints[0] = 1;
            //sum存储的是上一个数组的计算结果,从一个开始,每次计算当前元素与后一个元素的和
            int[] sum = new int[row.length];
            for (int i = 0; i < row.length; i++) {
                int s = 1;
                //最后一个数字不需要计算 就取本身
                if(i == row.length-1){
                    s = row[i];
                }else{
                    s = row[i]+row[i+1];
                }
                sum[i] = s;
            }
            for (int i = 0; i < sum.length; i++) {
                ints[i+1] = sum[i];
            }
            return ints;
        }
        private String expandString(){
            StringBuffer sb = new StringBuffer("");
            int[] row = this.arr[this.arr.length-1];
            int c = this.n;
            for (int i = 0; i < row.length; i++) {
                int n = row[i];
                sb.append(n);
                if(c != 0){
                    sb.append("*");
                    sb.append(a);
                    sb.append("^");
                    sb.append(c);
                }
                if(i != 0){
                    sb.append("*");
                    sb.append(b);
                    sb.append("^");
                    sb.append(i);
                }
                if(i != row.length - 1){
                    sb.append("  +  ");
                }
                c--;
            }
            System.out.println(sb);
            return sb.toString();
        }
        private int expandCaculate(){
            int[] row = this.arr[this.arr.length-1];
            int c = this.n;
            int count = 0;
            for (int i = 0; i < row.length; i++) {
                int n = row[i];
                count += n*Math.pow(a, c)*Math.pow(b, i);
                c--;
            }
            return count;
        }
    }

}