美文网首页
1 实现一个方法,计算100的阶乘

1 实现一个方法,计算100的阶乘

作者: 学不来的凡人 | 来源:发表于2021-04-15 14:50 被阅读0次

    这个问题太过简单,主要考虑到通用性,还有就是尽量不要使用递归,会导致方法栈空间占用过大。所以采用for循环的方式进行计算就OK。
    因为数字容易过大导致溢出,所以不是很理想

    //采用for循环的方式
    long long dofactorial(int min,int max){
        if (min > max) {
            return 0;
        }
        if (min == 0) {
            if (max == 0) {
                //0的阶乘是1
                return 1;
            }else{
                min = 1;
            }
        }
        long long result = 1;
        for (int i = min; i <= max; i++) {
            result *= i;
            
            if (result > INT_MAX) {
                //考虑溢出
                return -1;
            }
        }
        return result;
        
    }
    //使用递归实现
    long long recursion1(int n){
        if (n == 0) {
            return 1;
        }
        return n * recursion1(n-1);
    }
    
    
    int main(int argc, const char * argv[]) {
        @autoreleasepool {
            
            int result = dofactorial(0,10);
            int result1 = recursion1(10);
            printf("result = %d", result);
            printf("result1 = %d", result1);
            
        }
        return 0;
    }
    

    相关文章

      网友评论

          本文标题:1 实现一个方法,计算100的阶乘

          本文链接:https://www.haomeiwen.com/subject/hibdlltx.html