Давайте кое-что проясним.
Если факториал 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 и ответ получается равен нулю.
Более правильный код(скриншот)
Array.Sort(твоймассив);
Объяснение:
Весь код:
using System;
namespace MASSIV4IK
{
class Program
{
static void Main(string[] args)
{
int[] NUM = {25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, Convert.ToInt32(Console.ReadLine()) };
Array.Sort(NUM);
Array.Reverse(NUM);
for (int i = 0; i < NUM.Length; i++)
{
Console.WriteLine(NUM[i]);
}
Console.ReadKey();
}
}
}