#include double fact( int num); // 函数声明,阶乘函数,用于循环时调用 double rfact( int num); // 函数声明,阶乘函数,用于递归时调用 int main( void ) int num; printf( " ——————计算阶乘——————\n " ); printf( " 请输入一个整数(输入q退出): " ); while (scanf( " %d " ,&num)) // 如果输出为整数,则执行while语句 if (num< 0 ) printf( " 输入有误! " ); printf( " 循环语句计算的%d!=%lf\n " ,num,fact(num)); // 调用阶乘函数,循环计算 printf( " 递归计算的%d!=%lf\n " ,num,rfact(num)); // 调用阶乘函数,递归计算 printf( " 请输入一个整数(输入q退出): " ); printf( " 程序退出 " ); return 0 ; double fact( int num) double result= 1 ; // 存储计算结果 int i; if (num== 0 ) result = 1 ; // 0的阶乘为1 // 循环计算阶乘 for (i= 1 ; i<=num; i++ ) result *= i; return result; double rfact( int num) double result= 1 ; // 存储计算结果 if (num== 0 ) result = 1 ; // 0的阶乘为1 result=num*rfact(num- 1 ); // 递归计算 return result;

计算结果:

——————计算阶乘——————
请输入一个整数(输入q退出):5
循环语句计算的5!=120.000000
递归计算的5!=120.000000
请输入一个整数(输入q退出):10
循环语句计算的10!=3628800.000000
递归计算的10!=3628800.000000
请输入一个整数(输入q退出):q