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

全部评论

相关推荐

点赞 评论 收藏
分享
10-28 11:04
已编辑
美团_后端实习生(实习员工)
一个2人:我说几个点吧,你的实习经历写的让人觉得毫无含金量,你没有挖掘你需求里的 亮点, 让人觉得你不仅打杂还摆烂。然后你的简历太长了🤣你这个实习经历看完,估计没几个人愿意接着看下去, sdk, 索引这种东西单拎出来说太顶真了兄弟,好好优化下简历吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务