题解 | #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类型正数最大值