#include<stdio.h>
long fact (int n);
long rfact (int n);
int main(void)
{
int num;
printf("这个程序是计算阶乘的.\n");
printf("输入一个范围 0-12 (q为退出):\n");
while(scanf("%d",&num)==1)
{
if(num<0)
printf("不能是负数. 请重新输入. \n");
else if(num>12)
printf("不能大于 12.\n");
else
{
printf("loop: %d factorial = %ld\n",num,fact(num));
printf("recursion: %d factorial = %ld\n",num,rfact(num));
}
printf("输入一个范围 0-12 (q为退出):\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)//使用递归计算阶乘
{
int ans;
if(n>0)
ans=n*rfact(n-1);//这个递归是怎么算的啊...rfact(n-1)一直都没有执行到return ans那句啊.那它怎么返回值啊.没返回值怎么计算类?头晕中~~~
else
ans=1;
return ans;
}
好心帮帮我吧...我在递归这真的很迷茫啊~~~~
慕斯709654
杨魅力