首頁 >後端開發 >C#.Net教程 >C# 中的階乘

C# 中的階乘

PHPz
PHPz原創
2024-09-03 15:34:30463瀏覽

在本節中,我們將詳細了解 C# 中的階乘。階乘是數學領域(如代數或數學分析)中非常重要的概念。它由感嘆號 (!) 表示。階乘是任意正整數k,記為k!它是所有小於或等於 k 的正整數的乘積。

k!= k * (k-1) *(k-2) *(k-3) *(k-4) *…….3 *2 * 1.

計算給定數字階乘的邏輯

例如,如果我們要計算 4 的階乘,那麼就是,

範例#1

4! = 4 * (4-1) *(4-2) * (4-3)

4! = 4 * 3 * 2 * 1

4! = 24.

所以 4 的階乘是 24

範例 #2

6! = 6 * (6-1)* (6-2)* (6-3) * 6-4)* (6-5)

6! = 6*5*4*3*2*1

6! = 720

所以 6 的階乘是 720

類似地,透過使用這種技術,我們可以計算任何正整數的階乘。這裡重要的一點是 0 的階乘是 1。

0! =1.

對此有許多解釋,例如 for n!其中 n=0 表示沒有數字的乘積,它等於乘法實體。 {displaystyle {binom {0}{0}}={frac {0!}{0!0!}}=1.}

階乘函數主要用於計算排列組合,也用於二項式。借助階乘函數,我們還可以計算機率。例如我們可以用多少種方式來排列 k 個項目。我們對第一件事有k 個選擇,因此對於這k 個選擇中的每一個,我們為第二件事留下k-1 個選擇(因為第一個選擇已經做出),所以現在我們有k(k-1) 個選擇,所以現在對於第三個選擇,我們有k(k-1)(k-2) 個選擇,依此類推,直到我們得到一個關於剩餘的東西。所以總共我們會有 k(k-1)(k-2)(k-3)…3..1.

另一個即時範例假設我們要去參加一場婚禮,我們想要選擇穿哪件西裝外套。假設我們有 k 件西裝外套,但有空間容納僅有的 n 件。那麼我們可以用多少種方式使用 k 件西裝外套中的 n 件西裝外套 k!/(n!.(k-n)!).

C# 中的階乘範例

下面的範例展示如何以不同的方式計算任何數字的階乘,

範例#1

1.在這些範例中,for 迴圈用於計算數字的階乘。

代碼:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Factorial
{
class Program
{
static void Main()
{
int a = 7;
int fact = 1;
for (int x = 1; x <= a; x++)
{
fact *= x;
}
Console.WriteLine(fact);
Console.ReadLine();
}
}
}

在這個範例中,初始化了整數資料類型的變量,並使用for迴圈來計算數字。

輸出:

C# 中的階乘

2.在此範例中,允許使用者輸入數字來計算階乘。

代碼:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using  System.Threading.Tasks;
namespace FactorialExample
{
class Program
{
static void Main()
{
Console.WriteLine("Enter the number: ");
int a = int.Parse(Console.ReadLine());
int fact = 1;
for (int x = 1; x <= a; x++)
{
fact *= x;
}
Console.WriteLine(fact);
Console.ReadLine();
}
}
}

輸出:

C# 中的階乘

範例#2

1.在這些範例中,for 迴圈用於計算數字的階乘。

代碼:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Factorial
{
class Program
{
static void Main()
{
int a = 10;
int fact = 1;
while (true)
{
Console.Write(a);
if (a == 1)
{
break;
}
Console.Write("*");
fact *= a;
a--;
}
Console.WriteLine(" = {0}", fact);
Console.ReadLine();
}
}
}

輸出:

C# 中的階乘

2. 在這些範例中,while 迴圈用於計算數字的階乘。

代碼:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FactorialExample
{
class Program
{
static void Main()
{
Console.WriteLine("Enter the number: ");
int a = int.Parse(Console.ReadLine());
int fact = 1;
while(true)
{
Console.Write(a);
if(a==1)
{
break;
}
Console.Write("*");
fact *= a;
a--;
}
Console.WriteLine(" = {0}", fact);
Console.ReadLine();
}
}
}

輸出:

C# 中的階乘

範例#3

1.在此範例中,do-while 用於計算數字的階乘。

代碼:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Factorial
{
class Program
{
static void Main()
{
int a = 6;
int fact = 1;
do
{
fact *= a;
a--;
} while (a > 0);
Console.WriteLine("Factorial = {0}", fact);
Console.ReadLine();
}
}
}

輸出:

C# 中的階乘

2.在此範例中,do-while 用於計算數字的階乘。

代碼:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FactorialExample
{
class Program
{
static void Main()
{
Console.Write("Enter the number: ");
int a = int.Parse(Console.ReadLine());
int fact = 1;
do
{
fact *= a;
a--;
} while (a > 0);
Console.WriteLine("Factorial = {0}", fact);
Console.ReadLine();
}
}
}

輸出:

C# 中的階乘

範例#4

1.在此範例中,使用遞歸函數來計算數字的階乘。

代碼:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Factorial
{
class Program
{
static void Main()
{
int n= 5;
long fact = Fact(n);
Console.WriteLine("factorial is {1}", n, fact);
Console.ReadKey();
}
private static long Fact(int n)
{
if (n == 0)
{
return 1;
}
return n * Fact(n - 1);
}
}
}

在上面的例子中,數字的階乘是透過遞歸來實現的。遞歸背後的想法是解決小實例中的問題。因此,每當函數創建循環並調用自身時,就稱為遞歸。

輸出:

C# 中的階乘

2. 在此範例中,使用遞歸函數來計算數字的階乘。

代碼:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FactorialExample
{
class Program
{
static void Main()
{
Console.WriteLine("Enter the number");
int n = Convert.ToInt32(Console.ReadLine());
long fact = Fact(n);
Console.WriteLine("factorial is {1}", n, fact);
Console.ReadKey();
}
private static long Fact(int n)
{
if (n == 0)
{
return 1;
}
return n * Fact(n - 1);
}
}
}

輸出:

C# 中的階乘

結論

所以階乘的概念在二項式、排列組合等數學領域非常重要,這就是我們可以使用for、while、do-while、function等多種方法打印任意數字的階乘等等

以上是C# 中的階乘的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:C# 中的回文下一篇:C# 中的回文