Đề bài
Viết chương trình C# tính giai thừa của một số nguyên dương.
Định nghĩa giai thừa: giai thừa của 1 số là tích các số liên tiếp từ 1 đến số đó. Trường hợp đặc biệt, giai thừa của 0 và 1 là 1.
Ví dụ: giai thừa của 5 là 1*2*3*4*5 = 120
Lời giải
Có 2 cách để viết chương trình tính giai thừa trong C#:
- Tính giai thừa không sử dụng đệ quy.
- Tính giai thừ có sử dụng đệ quy.
Tính giai thừa không sử dụng đệ quy
Ví dụ chương trình tính giai thừa trong C# không sử dụng phương pháp đệ quy:
/** * Tinh giai thua su dung phuong phap de quy * * @author kienthuclaptrinh.net */ using System; using System.Collections; namespace KienThucLapTrinhCsharp { class TinhGiaiThua { /** * tinh giai thua * * @author kienthuclaptrinh.net * @param n: so nguyen duong * @return giai thua cua so n */ static long tinhGiaithua(int n) { int i; long giai_thua = 1; if (n == 0 || n == 1) { return giai_thua; } else { for (i = 2; i <= n; i++) { giai_thua *= i; } return giai_thua; } } /** * Ham main */ static void Main(string[] args) { int a = 5; int b = 0; int c = 10; Console.Write("Giai thua cua {0} la: {1} \n", a, tinhGiaithua(a)); Console.Write("Giai thua cua {0} la: {1} \n", b, tinhGiaithua(b)); Console.Write("Giai thua cua {0} la: {1}", b, tinhGiaithua(c)); } } }
Kết quả:
Giai thua cua 5 la: 120 Giai thua cua 0 la: 1 Giai thua cua 10 la: 3628800
Tính giai thừa có sử dụng đệ quy
Ví dụ chương trình tính giai thừa trong C# có sử dụng phương pháp đệ quy:
/** * Tinh giai thua su dung phuong phap de quy * * @author kienthuclaptrinh.net */ using System; using System.Collections; namespace KienThucLapTrinhCsharp { class TinhGiaiThua { /** * tinh giai thua * * @author kienthuclaptrinh.net * @param n: so nguyen duong * @return giai thua cua so n */ static long tinhGiaithua(int n) { if (n > 0) { return n * tinhGiaithua(n - 1); } else { return 1; } } /** * Ham main */ static void Main(string[] args) { int a = 5; int b = 0; int c = 10; Console.Write("Giai thua cua {0} la: {1} \n", a, tinhGiaithua(a)); Console.Write("Giai thua cua {0} la: {1} \n", b, tinhGiaithua(b)); Console.Write("Giai thua cua {0} la: {1}", b, tinhGiaithua(c)); } } }
Kết quả:
Giai thua cua 5 la: 120 Giai thua cua 0 la: 1 Giai thua cua 10 la: 3628800