# include <stdio.h>
long fact(int n);
long rfact(int n);
int main(void)
{
int num;
printf("This program calculates factorials.\n");
printf("Enter a value int the range 0-12(q to quit):\n");
while (scanf("%d",&num) == 1)
{
if (num < 0)
printf("No negative numbers,please.\n");
else if (num > 12)
printf("keep input under 13.\n");
else
{
printf("loop:%d factorial = %ld\n",num,fact(num));
printf("recursion: %d factorial = %ld\n",num,rfact(num));
}
printf("Enter a value int the range 0-12(q to quit):\n");
}
printf("Bye.\n");
return 0;
}
long fact(int n) //使用循环求阶乘
{
long ans;
for (ans = 1;n > 1;n--)
ans *= n;
return ans;
}
long rfact(int n) //使用递归求阶乘
{
long ans;
if (n > 0)
ans = n * rfact(n - 1);
else
ans = 1;
return ans;
}
关于递归在怎样调用 加粗的部分调用的是不是rfact函数定义的整个部分呢 还有就是会调用几次 怎样计算它会递归几次啊