这种递归方法有什么问题?

时间:2015-03-19 02:26:40

标签: java recursion

import java.util.Scanner;
public class Recursion
{
    public static void main(String[] args)
    {
        Scanner in = new Scanner(System.in);
        System.out.print("Enter n to start: ");
        int n = in.nextInt();
        System.out.println("Sum of numbers from 1 to " + n + ": " +new Recursion().sumUpTo(n));
    }
}
/**
 * Computes the sum of a range of numbers
 * 
 * @param n an integer
 * @return the sum of n range
 */
    public int sumUpTo(int num){
        if (num == 0) 
        {
            return 0;
        }
        else{
            return (num + sumUpTo(num-1))
        }
    }

这应该是一个非常简单的方法,我知道,但我似乎无法将其编译。我不断获得"课程,界面或枚举预期"在public int sumUpTo(int num)行上。这是执行实际计算的方法。任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:1)

一些事情:

  • 您的方法在类
  • 之外声明
  • 使用递归调用在行上缺少分号

答案 1 :(得分:-1)

将sumUpTo方法移到类中。

import java.util.Scanner;
public class Recursion
{
    public static void main(String[] args)
    {
        Scanner in = new Scanner(System.in);
        System.out.print("Enter n to start: ");
        int n = in.nextInt();
        System.out.println("Sum of numbers from 1 to " + n + ": " +new Recursion().sumUpTo(n));
    }

    /**
     * Computes the sum of a range of numbers
     * 
     * @param n an integer
     * @return the sum of n range
     */
    public int sumUpTo(int num){
        if (num == 0) 
        {
            return 0;
        }
        else{
            return (num + sumUpTo(num-1));
        }
    }
}

答案 2 :(得分:-1)

你应该是面向对象编程的新手。在Java中,函数(方法)必须在(属于)类的内部。您可以将public int sumUpTo(int num)放在公共类Recursion中,也可以创建另一个类并将其放在那里。但请记住,文件中应该只有一个公共类。

答案 3 :(得分:-1)

在Java中,一切都必须在一个类中。只需将您的方法移动到类的花括号内即可。它可以工作。

错误class, interface, or enum expected非常自我解释!它遇到的代码不在类,接口或枚举中,并且它没有预料到,因为那不应该发生!

如果您需要了解我的意思:

public class Recursion {
    public static void main (String[] args) {
    // your code here...
    }

    // Where your method should have gone.

}

另外,欢迎使用Stack Overflow。如果它回答了你的问题,请记得接受答案。