#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);
}
测试:
我们发现调用函数递归计算的运算时间要比循环计算阶乘的时间长。
本文对比了使用递归和循环两种方法计算阶乘的效率,通过实验发现递归方法在某些情况下可能不如循环方法高效。文章详细解释了两种方法的工作原理,并提供了相应的代码实现。
4190





