题解 | #n的阶乘#
n的阶乘
https://www.nowcoder.com/practice/97be22ee50b14cccad2787998ca628c8
#include <stdio.h>
int main() {
int n,a;
while(scanf("%d",&n)!=EOF){
if(n>=1&&n<=20){
long long sum=1;
for(a=1;a<=n;a++){
sum=sum*a;
}
printf("%lld",sum);
}
}
return 0;
}
//递归方法,要找到递归的出口,调用自身
long long digui(int n){
long long sum;
if(n==1) sum=1;
else{
sum=n*digui(n-1);
}
return sum;
}
int main(){
int n;
long long sum;
scanf("%d",&n);
if(n>=1&&n<=20){
sum=digui(n);
printf("%lld",sum);
}
return 0;
}
可积累经验:
1、输入有限制的情况的输入格式:scanf(“%d”,&n)!=EOF
2、只要需要遍历数的都可以考虑for,比如我们这里求阶乘
3、注意int的最大值范围
int 4B 32位,最大数为(2^31)-1=2147483647,是10位数;
unsigned int 0~4294967295
long long 8B 64位 【-2^63,2^63-1】
long long的最大值:9223372036854775807
long long的最小值:-9223372036854775808
输出用 %lld printf("%lld",sum);
补充:
表示 类型
CHAR_MIN char的最小值
SCHAR_MAX signed char 最大值
SCHAR_MIN signed char 最小值
UCHAR_MAX unsigned char 最大值
SHRT_MAX short 最大值
SHRT_MIN short 最小值
USHRT_MAX unsigned short 最大值
INT_MAX int 最大值
INT_MIN int 最小值
UINT_MAX unsigned int 最大值
UINT_MIN unsigned int 最小值
LONG_MAX long最大值
LONG_MIN long最小值
ULONG_MAX unsigned long 最大值
FLT_MANT_DIG float 类型的尾数
FLT_DIG float 类型的最少有效数字位数
FLT_MIN_10_EXP 带有全部有效数的float类型的负指数的最小值(以10为底)
FLT_MAX_10_EXP float类型的正指数的最大值(以10为底)
FLT_MIN 保留全部精度的float类型正数最小值
FLT_MAX float类型正数最大值
网易游戏公司福利 555人发布