2016-07-14 4 views
0

Я пытаюсь решить основное упражнение (вычисление факториала), но я застреваю при ошибке.Factorial using recursion method in IntelliJ

Я работаю в IntelliJ

Код:

public class calculation { 

    public long factorial(long number) { 
     if (number <= 0) { 
      return 1; 
     } 
     else 
      return number * factorial(number - 1); 

    } 
} 

    public static void main(String[] args) { 

     for(int counter = 0; counter <= 21; counter++) 
     { 
      System.out.printf("%d! = %d", counter, factorial(counter)); 
     } 
    } 
} 

Ошибка я получаю:

Error:(18, 30) java: class, interface, or enum expected - 4 instances

Я также попытался чтение номер с клавиатуры с помощью сканера, а затем вызвать функцию, но Я получил тот же результат.

Заранее спасибо.

+3

Поместите свой основной метод внутри класса. – Compass

+2

Удалить второй '}' после инструкции else. – hexafraction

+0

Использование цикла для вызова рекурсивного метода, подобного этому, имеет смысл только в качестве упражнения. –

ответ

0

У вас есть 1 дополнительная закрывающая скобка, и из-за этого ваш void main() вышел из класса. Исправьте это и попробуйте снова запустить код. Ниже код работает нормально.

` Расчет общественного класса {

public static long factorial(long number) { 
    if (number <= 0) { 
     return 1; 
    } 
    else 
     return number * factorial(number - 1); 

} 

public static void main(String[] args) { 

    for(int counter = 0; counter <= 21; counter++) 
    { 
     System.out.printf("%d! = %d", counter, factorial(counter)); 
    } 
} 

}

+0

Вам необходимо исправить форматирование – pjs