2015-05-22 2 views
-2
public static void main(String[] args) 
    { 
     factorial(5);  
    } 

    public static void factorial(int n) 
    { 
     int fact=n; 
     if(n>0) 
     { 

     fact =n*n-1; 
     n=n-2; 
     factorial(n); 
     System.out.println("Factorial is: "+fact);  
     } 
    } 

У меня есть следующие из пут: факториала: 0 факториала: 8 факториала: 24 но факториал 5 должен быть 120 я следующие вопросами:Факториала ме- логической ошибки в Java рекурсиях

  1. Как рекурсии работает здесь
  2. как исправить логическую проблему

ответ

0

Вы можете найти несколько ответов онлайн, . Ваш ответ неверен. В действительности существует логическая ошибка = n * n-1;

int fact(int n) 
{ 
    int result; 

    if(n==1) 
    return 1; 

    result = fact(n-1) * n; 
    return result; 
} 
0
class Test { 

    static int fact = 1; 
    public static void main(String[] args) { 
     factorial(5);  
    } 

    public static void factorial(int n) 
    { 

     if(n>0) { 

      fact = fact * (n); 
      factorial(n-1); 
     } else { 

      System.out.println("Factorial is: "+fact); 
     } 

    } 
} 
Смежные вопросы