gpt4 book ai didi

java - 我无法解决的无限递归循环?

转载 作者:行者123 更新时间:2023-11-29 07:00:15 25 4
gpt4 key购买 nike

我正在开发一个以递归方式生成音阶中音调频率的程序。每个频率都是比前一个高的两个频率的十二次方根。该程序必须使用递归(呃,教育)。当我使用这种方法时,我只会一遍又一遍地重复初始音调。这是为什么?

public static void scale(double x, double z){
double y;
if(z == x){
y = z * Math.pow(2, (1/12));
System.out.println(y);
scale (y, y);
}
else if(z >= (2 * x) - 1 || z <= (2 * x) + 1){
y = z;
System.out.println();
}
else{
y = z * Math.pow(2, (1/12));
scale (y, y);
}
System.out.println(y);
}

最佳答案

Why is that?

因为Java的整数除法。具体来说,1/12 变为 0,而不是 0.083333333,因为必须生成 int。那么 20 次方是 1yz 相同>.

使用double 字面值强制进行浮点除法。

1.0/12.0

关于java - 我无法解决的无限递归循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27324298/

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