首页 > 解决方案 > 递归困扰我

问题描述

我对这一切都很陌生,所以..谢谢

只是好奇为什么这不起作用。

它告诉我 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);
        }


    }

标签: javarecursion

解决方案


一方面,您试图在 main 方法中定义一个不起作用的方法;方法只能在类级别定义。

其次,每个递归都会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);
        }
    }
}

推荐阅读