要求用函数fac计算一个正整数的阶乘

 

计算阶乘的fac函数,可以当为0或为1时返回1,当是其他值时返回当前的数*fac(当前数-1)即可,代码如下:

参考链接:


https://baike.baidu.com/item/%E6%9D%A8%E8%BE%89%E4%B8%89%E8%A7%92/215098?fr=aladdin


#include <stdio.h>

// 计算num的阶乘 
long fac(long num){
    
    if (num==1||num==0){
        return 1;
    }else{
        return num*fac(num-1);
    }
} 


int main(void){
    
    long n;
    printf("请输入杨辉三角要打印的行数n:");
    scanf("%ld",&n);
    
    //  https://ask.csdn.net/questions/7455120?spm=1005.2025.3001.5141
    long i,j,m;
    for(i=0;i<=n-1;i++){
        
        // 打印前面的空格 
        for(j=0;j<n-i-1;j++){
            printf(" ");
        }
        
        // https://baike.baidu.com/item/%E6%9D%A8%E8%BE%89%E4%B8%89%E8%A7%92/215098?fr=aladdin
        // 打印每一行的每一项 
        for(m=0;m<=i;m++){
            printf("%ld ",fac(i)/fac(m)/fac(i-m));
        }
        
        printf("\n");  // 每行结尾的换行 
    }
    
    
    return 0;
}

img