在本節中,我們將詳細了解 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)!).
下面的範例展示如何以不同的方式計算任何數字的階乘,
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迴圈來計算數字。
輸出:
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(); } } }
輸出:
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(); } } }
輸出:
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(); } } }
輸出:
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(); } } }
輸出:
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(); } } }
輸出:
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); } } }
在上面的例子中,數字的階乘是透過遞歸來實現的。遞歸背後的想法是解決小實例中的問題。因此,每當函數創建循環並調用自身時,就稱為遞歸。
輸出:
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); } } }
輸出:
所以階乘的概念在二項式、排列組合等數學領域非常重要,這就是我們可以使用for、while、do-while、function等多種方法打印任意數字的階乘等等
以上是C# 中的階乘的詳細內容。更多資訊請關注PHP中文網其他相關文章!