В
Все
М
Математика
О
ОБЖ
У
Українська мова
Д
Другие предметы
Х
Химия
М
Музыка
Н
Немецкий язык
Б
Беларуская мова
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
Р
Русский язык
У
Українська література
Ф
Французский язык
П
Психология
А
Алгебра
О
Обществознание
М
МХК
В
Видео-ответы
Г
География
П
Право
Г
Геометрия
А
Английский язык
И
Информатика
Қ
Қазақ тiлi
Л
Литература
И
История
angelikasolnce
angelikasolnce
24.12.2022 05:55 •  Информатика

Разобраться что не так с кодом. программа считает факториал 40 и 20, после чего выводит значение формулы: 40! /(20! * должно получиться 137846528820, но выводит 0.

Показать ответ
Ответ:
Zhenya2188
Zhenya2188
06.10.2020 15:29

Давайте кое-что проясним.

Если факториал 20 ещё вмещается в возвращаемый тип long, то факториал 40 уже не влезет.Вы делаете лишний вызов функции Factorial только из-за того, что не делаете проверку, является ли n равным 1. Это никак не помешает работе программы, но лучше о таких вещах заботиться ещё на уровне составления алгоритма.Так как long является типом int64, то n1 и n2 - целочисленные переменные.Первый пункт

мы можем решить только путём изменения типов переменных n1 и n2 на float или double.

Второй пункт

решается добавлением в условие проверки на равенство единице:

if (n == 0 || n == 1)

А также лучше позаботиться о вводе отрицательных чисел. Но я не стану отнимать хлеб у преподавателя и у Вас в том числе, поэтому думайте сами, как решить эту и другие проблемы :)

Третий пункт

стоит показать на примере:

int i = 10; int j = 20; Console.WriteLine(i / j); // output: 0

Почему так происходит? Мы делим 10 на 20 и хотели бы получить 0.5, но тут требуется посмотреть на тип. Он априори не может хранить в себе числа после запятой. Это целочисленный тип. То есть после такого деления отбрасывается .5 и ответ получается равен нулю.

Более правильный код

(скриншот)


Разобраться что не так с кодом. программа считает факториал 40 и 20, после чего выводит значение фор
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота