Java Pascal三角形-仅打印';n';第一线
下面是一些输出Pascal三角形的代码,它显示了三角形的所有线条。例如,如果用户输入为5,则其输出如下:Java Pascal三角形-仅打印';n';第一线,java,Java,下面是一些输出Pascal三角形的代码,它显示了三角形的所有线条。例如,如果用户输入为5,则其输出如下: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 不过,我只想让它输出最后一行。所以对于5个,只有1 4 6 4 1。我很难做到这一点,虽然这很容易,我知道。感谢您的帮助 import java.util.Scanner; public class PascalsTriangle { public static void computeRow(int n) {
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
不过,我只想让它输出最后一行。所以对于5个,只有1 4 6 4 1。我很难做到这一点,虽然这很容易,我知道。感谢您的帮助
import java.util.Scanner;
public class PascalsTriangle {
public static void computeRow(int n) {
int counter;
for (int i = 0; i < n; i++) {
for (int j = 0; j <= i; j++) {
System.out.print(pascalValue(i, j) + " ");
}
System.out.println();
}
}
public static int pascalValue(int i, int j) {
if (j == 0) {
return 1;
} else if (j == i) {
return 1;
} else {
return pascalValue(i - 1, j - 1) + pascalValue(i - 1, j);
}
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Which line number of Pascal's Triangle? ");
int row = scanner.nextInt();
System.out.print("Line " +row+" of Pascal's Triangle:\n");
computeRow(row);
}
}
import java.util.Scanner;
公共类PascalsTriangle{
公共静态无效计算机OW(int n){
整数计数器;
对于(int i=0;i 对于(int j=0;j更改computeRow()
方法,以包括对要打印的三角形的特定线的检查。对于您的情况,您只想打印最后一行,这将在外部for
循环的最后一次迭代期间发生:
public static void computeRow(int n) {
int counter;
for (int i = 0; i < n; i++) {
// only output the line if it be the last one
if (i == n-1) {
for (int j = 0; j <= i; j++) {
System.out.print(pascalValue(i, j) + " ");
}
System.out.println();
}
}
}
public static void main(String[] args) {
computeRow(5);
}
为什么还要使用外部for循环?内部循环仅在i=n-1时执行。因此,您可以锁定i的值,即行索引(n),并使用如下递归函数:
for (int j=0; j<=n; j++) {
System.out.print(pascalValue(n, j) + " ");
}
for(int j=0;jTry)在print语句之前放置一个条件。您会使用哪种条件?我在computeRow中尝试了print语句之前的各种if语句,但似乎找不到一个符合预期的语句。谢谢!这很有效。我从未想过会这样。再次感谢Tim。
for (int j=0; j<=n; j++) {
System.out.print(pascalValue(n, j) + " ");
}
var getRow = function(rowIndex) {
if (rowIndex == 0) {
return [1];
}
else {
var row = [1];
previousLine = getRow(rowIndex - 1);
for (let i = 0; i < previousLine.length - 1; i++) {
row.push(previousLine[i] + previousLine[i + 1]);
}
row.push(1);
}
return row;
};