Вы смотрите в программирование, или хотя бы C#, так что просто для удовольствия, это будет ударом вашего ума:
using System;
namespace Scenario1_2
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Please enter the number you wish to factorize");
int number = int.Parse(Console.ReadLine());
Console.WriteLine("The number you entered was {0} and it's factorial is {1}", number, Factorial(number));
Console.ReadKey(true);
}
static int Factorial(int n)
{
if (n >= 2) return n * Factorial(n - 1);
return 1;
}
}
}
Нет петли в любом месте, а функция calls itself.
Вы также можете сделать это следующим образом:
using System;
namespace Scenario1_2
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Please enter the number you wish to factorize");
int number = int.Parse(Console.ReadLine());
Console.WriteLine("The number you entered was {0} and it's factorial is {1}", number, Factorial(number));
Console.ReadKey(true);
}
static int Factorial(int n)
{
return Enumerable.Range(1, n).Aggregate((i, r) => r * i);
}
}
}
Что все виды перепутались :) ... но это получить значительную работу вплоть до одной строки кода.
Тогда есть мой личный фаворит, бесконечное перечислимое:
using System;
namespace Scenario1_2
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Please enter the number you wish to factorize");
int number = int.Parse(Console.ReadLine());
Console.WriteLine("The number you entered was {0} and it's factorial is {1}", number, Factorials().Skip(number-1).First());
Console.ReadKey(true);
}
static IEnumerable<int> Factorials()
{
int n = 1, f = 1;
while (true) yield return f = f * n++;
}
}
}
Перемещайте Console.WriteLine и Readline вне цикла. Это или продолжайте атаковать, пока вы не получите ответ. –
О, я вижу! Большое вам спасибо, это имеет смысл! – WarriorPrincessM
попробуйте [это] (https://dotnetfiddle.net/thhGTa) –