如果这听起来不太好,请原谅我,我的英语不是最好的。到目前为止,我的代码是这样的:即使我知道我做错了很多。我知道这是错误的,但我不知道从哪里开始或如何更改标志。起初我这样做的想法是我们需要找到不同数字的 ln,但后来才知道它是输入 n。编辑:我相信我知道我做错了什么主要部分。我尽我所能解决了这个问题。我现在有点卡住了,因为我正在脑中发挥逻辑,我相信它应该可以工作。相反,它打印出来的只是 1.0 1.0 1.0 1.0 1.0
谁能帮忙指出我做错了什么?
公共类 aprox_log {
static double findLog (int n)
{
double ln = 1;
for (int i = 1; i <= n; i++)
{
for (int k = 0; i <= n; k++) {
if ((k%2) == 0)
ln = ln - (1/i);
ln = ln + (1/i);
}
}
return 1 - ln;
}
public static void main(String[] args) {
//These lines print the results of test inputs.
System.out.println(findLog(2)); //~0.69314718056
System.out.println(findLog(5)); //~1.60943791243
System.out.println(findLog(10)); //~2.30258509299
System.out.println(findLog(9)); //~2.19722457734
System.out.println(findLog(1)); //0
}
}
新代码:
public class aprox_log {
static double findLn (int n)
{
double ln = 0;
for (int i = 1; i <= n; i++)
{
if (i%2 == 0)
ln = ln - (1/i);
ln = ln + (1/i);
}
return ln;
public static void main(String[] args) {
//These lines print the results of test inputs.
System.out.println(findLn(2)); //0.5
System.out.println(findLn(5)); //0.783333333
System.out.println(findLn(10)); //0.64563492063
System.out.println(findLn(9)); //0.74563492063
System.out.println(findLn(1)); //1
}
}
`