Как рассчитать факториал любого числа с помощью метода рекурсии - PullRequest
0 голосов
/ 13 октября 2019

Я кодирую это через метод рекурсии. Этот код рассчитывает факториал любого числа. Я запускаю этот код и создаю исключение. У меня есть логическая ошибка. Как я могу это исправить?

package factorial;

public class Factorial {

    int i=1; 

    public int fact(int f){
        return i*fact(f-1);
    }

    public static void main(String[] args) {
        Factorial fa=new Factorial();
        fa.fact(5);
        System.out.println(fa.i);
    }

}

Ответы [ 3 ]

0 голосов
/ 13 октября 2019
static int fact(int n) {
        if (n<0)
            throw new IllegalArgumentException();
        if (n == 0)
            return 1;

        return n * fact(n-1);
    }
0 голосов
/ 13 октября 2019
package factorial;

public class Factorial {

    public int fact(int f){
        if(f == 0)
           return 1;
        return f * fact(f-1);
    }

    public static void main(String[] args) {
        Factorial fa=new Factorial();
        int factorial = fa.fact(5);
        System.out.println(factorial);
    }

}
0 голосов
/ 13 октября 2019

Вы пропустили базовый вариант (случай 0) этой проблемы. Пожалуйста, попробуйте следующий метод для расчета факториала:

static int fact(int n) 
{ 
    if (n == 0) 
      return 1; 

    return n * fact(n-1); 
} 
...