20!已经远远走出4字节整型范围,所以要用8字节整型或双精度浮点型来完成。下面给出两种带指写法友歼供选用。
(1)用8字节整型(long long型或蠢告配__int64型)
#include "stdio.h"
__int64 f(int n){
if(n==1 || n==0)
return 1;
return n*f(n-1);
}
int main(int argc,char *argv[]){
printf("20! = %I64d\n",f(20));
return 0;
}
代码格式和运行结果图片:
(2)用double型完成
#include "stdio.h"
double f(int n){
if(n==1 || n==0)
return 1;
return n*f(n-1);
}
int main(int argc,char *argv[]){
printf("20! = %.0f\n",f(20));
return 0;
}
代码格式与运行结果图片: