سلام.
فرمول کلی فاکتوریل به این صورت هست :
N! = 1 * 2 * 3 * 4 * ... * N
همچنین دو تا مورد پیش فرض برای فاکتوریل وجود داره و اونم اینه که فاکتوریل 1 و 0 میشه 1 .
با توجه به این نکات راحت تر میشه برنامه مورد نظر رو نوشت :
در حالت بازگشتی از خود عدد شروع میکنن و هر مرحله اونو در عدد یکی کمترش ضرب میکنن تا زمانیکه به 1 برسه (چون فاکتوریل 1 میشه 1 و دیگه بیشتر از این نباید ریزش کرد و ادامه داد. این نکته در تمام مسائل بازگشتی یه نکته اساسی هست و باید یه شرط برای خاتمه کار در نظر گرفت).
public partial class Form1 : Form
{
public long fact(int n)
{
if (n == 0 || n ==1)
return 1;
else
return n * fact(n - 1);
}
private void button1_Click(object sender, EventArgs e)
{
if (string.IsNullOrWhiteSpace(textBox1.Text ))
MessageBox.Show("عدد مورد نظرتان را وارد کنید");
else
{
long fact = fact(Int32.Parse(textBox1.Text);
MessageBox.Show(string.Format("factoriel {0} is : {1}", textBox1.Text, fact));
}
}
}
و اگر از روش بازگشتی استفاده نکنید، طبق همون فرمول اصلی باید از 1 تا خود عدد رو بصورت یکی یکی در هم ضرب کنید (مثلا برای !4 میشه 1 * 2 * 3 * 4 ) :
private void button1_Click(object sender, EventArgs e)
{
long fact = 1;
for (int i = 2; i <= Convert.ToInt32(textBox1.Text); i++)
{
fact *= i;
}
MessageBox.Show(string.Format("factoriel {0} is : {1}", textBox1.Text, fact));
}
موفق باشید.