Java 我需要修复什么才能让代码编译?

Java 我需要修复什么才能让代码编译?,java,terminal,Java,Terminal,使用递归方法编写Java程序,该方法接受值i作为输入并计算总和: m(i) = 1/3 + 2/5 + 3/7 + 4/9 + 5/11 + ... + i/(2i + 1) 到目前为止,我已经: import java.util.Scanner; public class Recursion { public static void main(String[] args) { Scanner sc= new Scanner(System.in);

使用递归方法编写Java程序,该方法接受值i作为输入并计算总和:

 m(i) = 1/3 + 2/5 + 3/7 + 4/9 + 5/11 + ... + i/(2i + 1)
到目前为止,我已经:

import java.util.Scanner;

public class Recursion {
    public static void main(String[] args) {
        Scanner sc= new Scanner(System.in);
        System.out.println("Enter an i: ");
        int i = sc.nextInt();
        if (i == 0) {
            System.out.println(0);
        }
        else {
            System.out.println(i / (2 * i + 1) + (main(i-1)));
        }
    }
}

代码没有编译。请帮忙

您不应该在
main
函数上使用递归。只需创建第二个不是
main
的函数,它应该可以工作:

import java.util.Scanner;
公共类递归{
公共静态void main(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
System.out.println(“输入i:”;
int i=sc.nextInt();
System.out.println(递归(i));
}
公共int递归(int i){
如果(i==0){
返回0;
}
否则{
返回(i/(2*i+1)+(递归(i-1));
}
}
}

好的,我想我终于明白你想做什么了!问题是你实际上在试图构建一个字符串!方法是做它应该做的,你的返回并没有真正做它应该做的

import java.util.Scanner;
公共类递归
{
私有静态字符串结果=null;
公共静态void main(字符串[]args)
{
扫描仪sc=新的扫描仪(System.in);
System.out.println(“输入i:”;
int i=sc.nextInt();
System.out.println(递归(i));
}
公共静态字符串递归(inti)
{
如果(i!=0)
{
如果(结果==null)
{
结果=(i+“/”+(2*i+1));
递归(i-1);
}
其他的
{
结果=result.concat(“+”).concat(i+“/”+(2*i+1));
递归(i-1);
}
}
返回结果;
}
}

请让我知道这是否符合你的要求

“代码未编译”发生这种情况时,编译器会给出特定的错误消息。您应该共享它们。您的
main
接受
String[]args
。您试图用
int
来调用它。这就是为什么错误是“
Recursion.java
:12:错误:不兼容的类型:
int
无法转换为
String[]
”。不要使用
main
进行递归,创建新方法。我很确定
Recursion()
不会返回预期结果:-)上面建议的代码确实可以编译,它将始终返回一个0:(是的,它会这样做,因为这就是您编写它的目的吗?由于您的方法
recursion()
的工作方式,如果(i==0)为真,它将一直循环,直到
为止。您希望它做什么?我打算
recursion()
如果用户输入0,则返回0,如果输入!=0,则返回计算结果仍然不太明白这一点。无论如何,您实际上要做的是输入任何整数
i
,然后在
i-1
上不断调用
recursion()
,直到
i-1==0
,这反过来让
if(i==0)
return true导致方法返回
0
。在任何输入上返回
0
正是此方法设计的目的。