如果想實現一個階乘,比如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); }
新聞熱點
疑難解答