C語言經典演算法(七)——遞迴實現階乘演算法的兩種方法
阿新 • • 發佈:2018-10-31
今後繼續整理演算法並寫出自己的理解和備註。 C++實現的:遞迴實現階乘演算法N!
1、 遞迴實現n!
<1> 題目描述:輸入n值,求解n的階乘
<2> 方法一:累乘法
<3> 方法二:遞迴法
原始碼:
一、 遞迴實現n!
1、 累乘法
#include<iostream>
using namespace std;
#define UL unsigned long
UL Factorial(UL n)
{
int sum = 1;
for(int i=1; i<=n; ++i)//數學概念
{
sum *= i;
}
return sum;
}
void main()
{
UL n;
cout<<"請輸入n:>";
cin>>n;
cout<<n<<"的階乘為:>"<<Factorial(n)<<endl;
}
2、 遞迴法
#include<iostream>
using namespace std;
#define UL unsigned long
UL Factorial(UL n)
{
if(n == 0)
return 1;
else
return n * Factorial(n-1);//遞迴有臨界,不能溢位呼叫棧,則可以直接使用遞迴,程式碼簡單但效率不會很高
}
void main()
{
UL n;
cout<<"請輸入n:>";
cin>>n;
cout<<n<<"的階乘為:>"<<Factorial(n)<<endl;
}