我真的得到了递归(或者我认为),但这个问题让我感到沮丧.我试图返回1 + 1/2 + 1/3 + ... + 1/n,但无论我尝试什么方法返回1.0.我不能为我的生活弄清楚什么是错的.
public static double harmonic(int n) {
if(n == 1) {
return 1;
} else {
return (1 / n) + (1 / harmonic(n - 1));
}
}
Run Code Online (Sandbox Code Playgroud)
Cla*_*diu 13
您想使用浮点除法:
public static double harmonic(int n) {
if(n == 1.0) {
return 1.0;
} else {
return (1.0 / n) + (1.0 / harmonic(n - 1.0));
}
}
Run Code Online (Sandbox Code Playgroud)
那是:1/2是0; 1/2.0是0.5.
Bri*_*ian 10
好吧,对于一个,你不想返回(1 / n) + (1 / harmonic(n - 1)),但你也需要使用double算术:
public static double harmonic(int n) {
if(n == 1) {
return 1.0;
} else {
return (1.0 / n) + harmonic(n - 1);
}
}
Run Code Online (Sandbox Code Playgroud)
如果你离开它,因为1 / harmonic你完全返回另一个函数:
(1/n)+ 1 /(1 /(n - 1)+ 1 /(1 /(n - 2)+ 1 /(...)))
这是一个很容易弄清楚的功能,顺便说一句,顺便说一句,但我想(我第三次编辑它)这次我做对了.
| 归档时间: |
|
| 查看次数: |
13415 次 |
| 最近记录: |