n的阶乘的两种方式,递归与非递归
n!=1×2×3×...n
在n的阶乘中加入运行的时间,可以判断递归与非递归的运行效率。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void menu()
{
printf("********1.非递归 2.递归*********\n");
}
//非递归函数
long long jc1(long long int n)
{
int i;
int s=1;
for(i=1;i<=n;i++)
{
s=s*i;
}
return s;
}
//递归函数
long long jc2(long long int n)
{
int i,s;
if(n==1) return 1;
else if(n==0) return 1;
else
s=jc2(n-1)*n;
return s;
}
int main()
{
menu();
int begintime,endtime;
long long int n,i,s,x;
int choice;
printf("请输入菜单序号:\n");
scanf("%d",&choice);
printf("请输入阶乘数:\n");
scanf("%d",&n);
switch(choice)
{
case 1:jc1(n);break;
case 2:jc2(n);break;
}
begintime=clock();//开始时间
x=jc1(n);
x=jc2(n);
printf("%d",x);
endtime = clock();//截止时间
printf("\n\nRunning Time: %dms\n",endtime-begintime);
return 0;
}