12

The assignment is to create Pascal's Triangle without using arrays. I have the method that produces the values for the triangle below. The method accepts an integer for the maximum number of rows the user wants printed.

public static void triangle(int maxRows) {
    int r, num;
    for (int i = 0; i <= maxRows; i++) {
        num = 1;
        r = i + 1;
        for (int col = 0; col <= i; col++) {
            if (col > 0) {
                num = num * (r - col) / col;    
            }
            System.out.print(num + " ");
        }
        System.out.println();
    }
}

I need to format the values of the triangle such that it looks like a triangle:

              1
            1   1
          1   2   1
        1   3   3   1
      1   4   6   4   1
    1   5  10  10   5   1
  1   6  15  20  15   6   1

I can't for the life of me figure out how to do that. Please answer keeping in mind that I'm a beginner in Java programming.

4

8 回答 8

12
public static long pascalTriangle(int r, int k) {
    if (r == 1 || k <= 1 || k >= r) return 1L;
    return pascalTriangle(r - 1, k - 1) + pascalTriangle(r - 1, k);
}

此方法允许您找到第 r 行的第 k 个值。

于 2016-04-09T01:36:00.207 回答
8

这是一个好的开始,作业在哪里,剩下的交给你:

int maxRows = 6;
int r, num;
for (int i = 0; i <= maxRows; i++) {
    num = 1;
    r = i + 1;
    //pre-spacing
    for (int j = maxRows - i; j > 0; j--) {
        System.out.print(" ");
    }
    for (int col = 0; col <= i; col++) {
        if (col > 0) {
            num = num * (r - col) / col;
        }
        System.out.print(num + " ");
    }
    System.out.println();
}

输出:

      1 
     1 1 
    1 2 1 
   1 3 3 1 
  1 4 6 4 1 
 1 5 10 10 5 1 
1 6 15 20 15 6 1 
于 2013-11-12T01:07:22.643 回答
1

在每一行中,您需要打印:

  • n空间
  • m数字
  • n空间

你的工作是找出n(最后一行为零)并m基于row number.

[这更像是评论,但我需要的格式选项比评论提供的更多]

于 2013-11-12T01:07:14.580 回答
1

您需要打印空格(就像其他人提到的那样),而且因为这是作业,我把它留给你,但你可能想看看这个方便的小功能

System.out.printf();

这是一个方便的参考指南

另请注意,您需要考虑到某些数字的长度超过 1 位!

于 2013-11-12T01:11:39.377 回答
1
import java.util.*;
class Mine {
    public static void main(String ar[]) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        for (int i = 1; i < n; i++) {
            int size = 1;
            for (int j = 1; j <= i; j++) {
                int a[] = new int[size];
                int d[] = new int[size];
                for (int k = 1; k <= size; k++) {
                    a[1] = 1;
                    a[size] = 1;

                    for (int p = 1; p <= size; p++) {
                        d[p] = a[p];
                    }

                    if (size >= 3) {
                        for (int m = 2; m < size; m++) {
                            a[m] = d[m] + d[m - 1];
                        }
                    }
                }

                for (int y = 0; y < size; y++) {
                    System.out.print(a[y]);
                }
                System.out.println(" ");
            }
            ++size;
        }
    }
}
于 2014-11-17T16:06:14.627 回答
0
public class HelloWorld {
    public static void main(String[] args) {
        int s = 7;
        int k = 1;
        int r;

        for (int i = 1; i <= s; i++) {
            int num = 1;
            r = i;
            int col = 0;
            for (int j = 1; j <= 2 * s - 1; j++) {
                if (j <= s - i)
                    System.out.print("  ");
                else if (j >= s + i)
                    System.out.print("  ");
                else {
                    if (k % 2 == 0) {
                        System.out.print("  ");
                    } else {
                        if (col > 0) {
                            num = num * (r - col) / col;
                        }
                        System.out.print(num + " ");
                        col++;
                    }
                    k++;
                }
            }
            System.out.println("");
            k = 1;
        }
    }
}

输出:

            1             
          1   1           
        1   2   1         
      1   3   3   1       
    1   4   6   4   1     
  1   5   10   10   5   1   
1   6   15   20   15   6   1 
于 2015-10-21T12:36:09.197 回答
0

您可以在 java 中尝试此代码。这很简单 :)

public class PascalTriangle {
    public static void main(String[] args) {
        int rows = 10;
        for (int i = 0; i < rows; i++) {
            int number = 1;
            System.out.format("%" + (rows - i) * 2 + "s", "");
            for (int j = 0; j <= i; j++) {
                System.out.format("%4d", number);
                number = number * (i - j) / (j + 1);
            }
            System.out.println();
        }
    }
}

输出:

                   1
                 1   1
               1   2   1
             1   3   3   1
           1   4   6   4   1
         1   5  10  10   5   1
       1   6  15  20  15   6   1
     1   7  21  35  35  21   7   1
   1   8  28  56  70  56  28   8   1
 1   9  36  84 126 126  84  36   9   1
于 2017-03-20T07:02:58.860 回答
-1

代码完美打印帕斯卡三角形:

public static void main(String[] args) {
    int a, num;

    for (int i = 0; i <= 4; i++) {
        num = 1;
        a = i + 1;

        for (int j = 4; j > 0; j--) {
            if (j > i)
                System.out.print(" ");
        }

        for (int j = 0; j <= i; j++) {
            if (j > 0)
                num = num * (a - j) / j;

            System.out.print(num + " ");
        }
        System.out.println();
    }
}

输出:

    1 
   1 1 
  1 2 1 
 1 3 3 1 
1 4 6 4 1 
于 2016-09-22T05:36:17.347 回答