Open artyom-yakovenko opened 8 years ago
Некорректно работает при вводе нуля: вместо результата показывает сообщение, что я не ввёл число.
Также ты не обрабатываешь ситуацию, когда пользователь вводит отрицательное число. Факториал определён только для целых неотрицательных чисел, поэтому при вводе отрицательного числа необходимо сообщать пользователю, что он ввёл неправильное число. У тебя же программа возвращает для всех отрицательных чисел 1.
Всегда старайся продумывать и тестировать все граничные условия. Например, для факториала таких условия три:
Исправь, пожалуйста ;)
Originally from #15 by Denys:
Исправил как ты просил! сделал исключение для отрицательно числа и для нуля. Правда сделал через if , по другому я не знаю как.
Всё правильно ты через if сделал - по-другому никак.
Единственное замечание - это то, что ты реализовал логику проверку введенного значения через два if'а, тогда как это всё по сути одна мысль:
Если параметр отрицательный:
факториал для отрицательных чисел не определён - сообщить об ошибке,
иначе если параметр равен нулю:
это особый случай - необходимо вернуть 1,
иначе:
вычислить результат согласно формуле n! = n * (n - 1)!
В синтаксисе C# это выглядело бы так:
if (value < 0) {
// факториал для отрицательных чисел не определён - сообщить об ошибке
} else if (value == 0) {
// это особый случай - необходимо вернуть 1
} else {
// вычислить результат согласно формуле n! = n * (n - 1)!
}
Но в целом принято.
Поищи и найди, что такое факториал числа N и как он вычисляется. Вкратце опиши алгоритм своими словами, а также каковы требования к числу N. То есть для каких чисел факториал может быть вычислен, а для каких нет. Дай мне знать, когда эта часть готова, и после моей проверки реализуй в коде.
При выборе этой задачи программа должна запросить у пользователя число N, посчитать для него факториал и вывести результат на экран. Не забудь адекватно обрабатывать граничные условия - ситуации, когда факториал не может быть вычислен для введенного числа. В таком случае пользователю должно показываться сообщение об ошибке с кратким объяснением, что не так.