2017-01-28 4 views
-5

3! = 3 * 2 * 1 = 6Вывод, необходимый в Java

БЕЗ ИСПОЛЬЗОВАНИЯ LOOP

Спасибо!

Моя функция ниже:

public static int factorial(int n) 
    {  
     if ((n == 1) || (n == 0)) 

      return 1; 

     else  

      return(n * factorial(n-1)); 
    } 
+0

Добро пожаловать в переполнение стека! Похоже, вы просите о помощи на дому. Хотя у нас нет проблем с самим собой, обратите внимание на эти [dos and don'ts] (http://meta.stackoverflow.com/questions/334822/how-do-i-ask-and-answer-homework-questions/338845 # 338845), и соответственно отредактируйте свой вопрос. –

+0

Рекурсивный факторный метод выглядит правильно. Однако в странном повороте событий вы решили получить пользовательский ввод от конструктора 'FF'. Это необычно и не должно быть сделано. –

+0

Не знаю, о чем вы просите - у вас в настоящее время нет цикла, у вас есть рекурсия. – luk2302

ответ

1

Вы можете напечатать значение параметра, переданного в факторного метода так:

создать функцию:

public static int factorial(int n) { 
     System.out.print(n); // here 
     if (n > 1) System.out.print("*"); // and here 
     if ((n == 1) || (n == 0)) 
      return 1; 
     else { 
      return (n * factorial(n - 1)); 
     } 
    } 

Производит:

3!=3*2*1=6 
+0

wow большое вам спасибо! :) –

+1

Хотя это может решить немедленный вопрос OP, мне кажется, что неправильная практика заключается в том, чтобы вводить код ввода пользователя в конструктор, потому что код не используется повторно и может быть вызван только один раз. Чтобы понять, почему, представьте, что исключение происходит в конструкторе, JVM завершит инициализацию объекта, но теперь факториал не был бы создан должным образом. И мы не можем вызвать конструктор во второй раз. –

+1

@OP вы должны послушать Тима здесь. Спасибо за комментарий, Тим. – GurV

0

Вы можете использовать глобальную переменную (StringBuffer) и добавить числа к ней из факториала. Используйте эту переменную из основного метода при печати.