本帖最后由 嗨,强哥! 于 2013-7-20 14:53 编辑
这是《C Primer Plus》第五版 中文版 第九章 >>> 关于递归函数的例题的完整代码。
其中else if书写格式我略作了修改,其他照抄。
--------------------------------------------------------
//factor.c--使用循环和递归计算阶乘
#include <stdio.h>
#include <stdlib.h>
long fact (int n);
long rfact (int n);
int main(void)
{
int num;
printf ("This program calculates factorials.\n");
printf ("Enter value in 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 value in the range 0-12(q to quit):\n");
}
printf ("Bye.\n");
system("pause");
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;
}
|