递归困扰我

时间:2018-12-04 20:45:48

标签: java recursion

我是这一切的新手。.谢谢

很好奇为什么这行不通。

它告诉我public int sumFirst(int n)是表达式的非法开头。

package program8;
public class Program8 {

    public static void main(String[] args) {

        public int sumFirst(int n) 
        {
           Scanner input = new Scanner(System.in);
            n = input.nextInt();
            if (n == 0)
                return 0;
            else
                return sumFirst(n-1) + sumFirst(n-2);
        }


    }

1 个答案:

答案 0 :(得分:0)

例如,您试图在主方法中定义一个方法,该方法将不起作用。方法只能在类级别定义。

其次,n = input.nextInt();方法内的sumFirst将针对每次递归执行,这可能不是您想要的。

尝试以下方法:

public class Program8 {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println(sumFirst(input.nextInt())); 
    }

    public int sumFirst(int n) {
        if (n == 0) {
            return 0;
        } else {
            return sumFirst(n-1) + sumFirst(n-2);
        }
    }
}