[Homework] Math For Developers: Problem 3 Some Factorials
И пак аз! :)
Относно факториелите, имам следния код:
static void Main()
{
ulong i, number, fact;
Console.WriteLine("Enter a number to find the factorials");
number = ulong.Parse(Console.ReadLine());
fact = number;
for (i = number - 1; i >= 1; i-- )
{
fact = fact * i;
Console.WriteLine("Factorial of the given number is: {0}", fact);
}
}
Правилно ли съм избрал променливата да е ulong, т.к. от лекцията видях, че факториела е продукта от положителните множители?
Не ми става ясно, защо в един момент изписва само 0, препълва се променливата и връща началната стойност на ulong ли? Ако да, защо го изписва доста пъти преди да спре?
Вярно ли е според вас така да се реши задачата и Е ли е вариант да се сложи брояч на символите от стринга и когато стигне 1 / ulong = 0 / да спира и да не го печата?
Май доста избързвам с писането на код?
Добре де, добавих си System.Numerics, използвах BigInteger и пак ми печата 0 ?! :(
class SomeFactorials
{
static void Main()
{
int i, number, fact;
Console.WriteLine("Enter a number to find the factorials");
number = int.Parse(Console.ReadLine());
fact = number;
for (i = number - 1; i >= 1; i-- )
{
fact = fact * i;
}
BigInteger bigFact = fact;
Console.WriteLine("Factorial of the given number is: {0}", bigFact);
}
}
}
Какво бъркам сега?!
Здравей,
Проблемът е, че използваш BigInteger много късно. Трябва да декларираш fact като BigInteger в самото начало. В противен случай, като въртиш цикъла fact се препълва много бързо.
Накрая махаш това bigFact и изписваш на конзолата директно fact.
Поздрави!
Това си е чисто недоглеждане моето... :(
Извинявай Dobrin и ти благодаря за отзивчивостта...то е пред очите ми, ама трябва някой да гледа. Коригирах го и всичко си работи, както трябва!
Още веднъж благодаря!