#include<stdio.h>
int fun(int n) //定义函数
{
if(n==0||n==1)
{
n=1;
}
else
{
n=n*fun(n-1); //递归调用函数
}
}
int main()
{
int i,j;
printf("请输入一个数字:\n");
scanf("%d",&i);
j=fun(i);
printf("它的阶乘为: %d",j);
}
测试结果:
相比于传统的利用循环计算阶乘:
#include<stdio.h>
int main()
{
int i=1,n;
int sum=1; //设初值为1,因为0和1的阶乘都为1;
printf("输入一个正的数字:\n");
scanf("%d",&n);
for(i=1;i<=n;i++) //循环的次数,由输入的n决定
{
sum=sum*i; //循环计算阶乘
}
printf("它的阶乘为:%d",sum);
}
测试:
我们发现调用函数递归计算的运算时间要比循环计算阶乘的时间长。