/*********************************************************************
利用循环及递归计算n的阶乘。
现有疑问:
1、递归的界限以及跳出循环条件。
2、递归中如何控制递归降序。
*********************************************************************/
#include <stdio.h>
long fact(int n);
long rfact(int n);
int main(void)
{
int n;
printf("Enter a value in the range 0-15 (q to quit):\n");
while((scanf_s("%d", &n)) == 1)
{
if(n<0)
printf("No negative numbers,please.\n");
else if(n>15)
printf("Please keep input under 15.\n");
else{
printf("recursion: %d factorial = %ld.\n", n, fact(n));
printf("loop: %d factorial = %ld.\n", n, rfact(n));
}
printf("Enter a value in the range 0-15 (q to quit):\n");
}
return 0;
}
long fact(int n)
{
return ((n == 1)? 1:(n * fact(n-1)));
}
long rfact(int n)
{
int ans;
for(ans=1;n>0;n--)
ans *= n;
return ans;
}
C primer plus 第八章 例题练习(递归)
最新推荐文章于 2024-02-07 20:30:37 发布