本文實例講述了C#采用遞歸實現階乘的方法,供大家參考之用。通常來說,如果想實現一個階乘,比如6 * 5 * 4 * 3 * 2 * 1,首先想到的可能是循環遍歷。
如下示例所示:
class Program{ static void Main(string[] args) { Console.WriteLine("請輸入一個數"); int number = Convert.ToInt32(Console.ReadLine()); double result = JieCheng(number); Console.WriteLine(number.ToString() + "的階乘結果是:" + result.ToString()); Console.ReadKey(); } public static double JieCheng(int number) { if (number == 0) { return 0; } //初始值必須設置為1 double result = 1; for (int i = number; i >= 1; i--) { result = result*i; } return result; }}
但以上的階乘還有一種實現方式:6 * (6-1) * (6-2) * (6-3) * (6-4) * (6-5) 或 6 * (6-1) * (5-1) * (4-1) * (3-1) * (2-1),也就是說后面數總是由前面的數減1得到的。
當實現的邏輯相同,且內部遞歸方法的參數可以由外部遞歸方法的參數,經過某種算法而獲得,這正是遞歸登場的時候。
實現代碼如下:
public static double JieCheng(int number){ if (number == 0) { return 1; } return number * JieCheng(number - 1);}
希望本文所述實例對學習算法的朋友能有所幫助。
新聞熱點
疑難解答