使用递归思想求n!
递归就是把一个看似复杂的问题经过分析转化为一个通用的递归步骤
给出两个方法,可以比较一下。
方法一、直接把函数f代表一部分,也是一个结果,和之后相乘。比较方便
#include <iostream>
using namespace std;
int f(int n)
{
if (n==0)
return 1;
else
return f(n-1)*n;//f(n-1)代表n-1阶乘
}
void main()
{
int n;
cin>>n;
cout<<f(n)<<endl;
system("pause");
}
方法二、把中间结果保存到临时变量s中
#include <iostream>
using namespace std;
//使用s来保存结果
void f(int n,int& s)
{
if (n==0)//出口
s=1;
else
{
f(n-1,s);//求n-1阶乘,并把结果放到s中
s=s*n; //s=s(代表n-1的阶乘)*n
}
}
void main()
{
int n;
int s=1;
cin>>n;
f(n,s);
cout<<s<<endl;
system("pause");
}