gpt4 book ai didi

java - 为什么我的帕斯卡三角代码不起作用?

转载 作者:行者123 更新时间:2023-12-01 19:32:02 25 4
gpt4 key购买 nike

我一直在尝试使用组合公式编写帕斯卡三角形,但它无法正常工作,我不确定问题是什么?

这是输入:

public class Probs {
public static int fact(int n) {
int f;
for (f = 1; n > 1; n--) {
f *= n;
}
return f;
}

public static int comb(int i, int j) {
return fact(i) / fact(i - j) * fact(j);
}

public static void main(String[] args) {
int n = 5;
int i;
int j;
for (i = 0; i < n; i++) {
for (j = 0; j < n - i; j++) {
System.out.print(" ");
}
for (j = 0; j <= i; j++) {
System.out.print(" " + comb(i, j));
}
System.out.println();
}
}
}

输出:

    1
1 1
1 2 4
1 3 12 36
1 4 24 144 576

您能以适合初学者的方式解释一下原因吗?

最佳答案

您需要在 comb() 中的操作周围添加括号以获得正确的优先级。

/* 具有相同的优先级,因此当您编写时

return fact(i)/ fact(i-j)*fact(j);

这个表达式实际上相当于

return (fact(i)/fact(i-j)) * fact(j);

这并不是你真正想要的......

通过在分母中的乘积两边添加括号来修复它:

return fact(i) / (fact(i-j)*fact(j));

关于java - 为什么我的帕斯卡三角代码不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59445906/

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