gpt4 book ai didi

java - 递归方法打印帕斯卡三角形上下颠倒和右侧向上(通过 boolean 值)

转载 作者:行者123 更新时间:2023-11-30 02:24:45 26 4
gpt4 key购买 nike

我正在尝试创建一个递归方法来打印帕斯卡三角形的上下颠倒和右侧向上。我想使用 boolean 变量在倒三角形和正三角形之间切换。至此,我已经成功编写了使帕斯卡三角形倒转的代码:

public class Main {
boolean upsideDown = true;

public void printPascal(int n) {
if (!upsideDown) {
//THIS IS WHERE I'M STUCK
}
if (upsideDown) {
if (n < 0)
return;
for (int k = 0; k <= n; k++) {
System.out.print(binom(n, k) + " ");
}
System.out.println();
printPascal(n - 1);
}
}

public int binom(int n, int k) {
if (k == n || k == 0)
return 1;
else return binom(n - 1, k - 1) + binom(n - 1, k);
}

public static void main(String[] args) {
new Main().printPascal(10); //This will print the Pascal's triangle
//from levels 10 to 0
}
}

现在,我尝试将帕斯卡三角形正面朝上打印(从第 0 层到第 10 层)。我怎样才能建立一个递归方法来实现这个目标?

我知道网上有很多关于帕斯卡三角形的代码。但我找不到任何专门解决我的问题的内容。

最佳答案

似乎最优雅的解决方案是更改打印顺序,以便首先打印最后一步,然后打印倒数第二个等等,最后打印第一步。这行得通吗?

public void printPascal(int n) {
if (!upsideDown) {
if (n < 0)
return;
//print the future step first, then print current step
printPascal(n - 1);
System.out.println();
for (int k = 0; k <= n; k++) {
System.out.print(binom(n, k) + " ");
}
}
if (upsideDown) {
if (n < 0)
return;
for (int k = 0; k <= n; k++) {
System.out.print(binom(n, k) + " ");
}
System.out.println();
printPascal(n - 1);
}
}

关于java - 递归方法打印帕斯卡三角形上下颠倒和右侧向上(通过 boolean 值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45947763/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com