【C语言】——打印杨辉三角(递归)

目录

🌞1. 什么是【杨辉三角】

🌞2. 实现思路

🌞3.  法一:运用递归相加(代码)

🌞4. 法二:运用递归相乘求阶乘 (代码)


 🌞哈喽,大家好丫,你们的小郭子又来啦 ~

🌞今天我们继续聊一聊jC语言中的【杨辉三角】,

话不多说,直接上干货,嘻嘻嘻 ~

                        

🌞1. 什么是【杨辉三角

 

 

🌞2. 实现思路

法一: 

根据观察第一列和对角线上的元素之外,其余元素的值均为前一行上的同列元素和前一列元素之和。(我们可以依靠递归相加就行实现)


法二: 

根据观察我们可以得知,杨辉三角每一行的数实际上是二项式定理(a+b)^n的展开式的系数,第n行的m个数可表示为 C(n-1,m-1),即为从n-1个不同元素中取m-1个元素的组合数。

 

🌞3.  法一:运用递归相加(代码)

#include <stdio.h>
 
long getadd(int a,int b){
    return (b == 1||b == a) ? 1 : getadd(a - 1,b - 1) + getadd(a - 1,b);
}
 
int main(){
    int i,j,n = 0;
    printf("输入所需杨辉三角的行数(1-20):");
    scanf("%d",&n);
    for(i = 1;i <=n; i++){
        for(j = 1;j <= i;j++){
            printf("%6ld",getadd(i,j));
        }
        printf("\n");
    }
    return 0;
}

🌞4. 法二:运用递归相乘求阶乘 (代码)

#include <stdio.h>
 
int mat(int a){
    return (a == 1 || a == 0) ? 1 : a*mat(a - 1);
}
 
int main(){
    int i,j,n = 0;
    int temp = 0;
    printf("输入所需杨辉三角的行数(1-20):");
    scanf("%d",&n);
    for(i = 0;i < n; i++){
        for(j = 0;j <= i; j++){
            temp = mat(i) / (mat(i - j)*mat(j));
            printf("%5d",temp);
        }
        printf("\n");
    }
 
    return 0;
}
 

 

 好啦,今天的分享到这里就结束啦 ~🌞🌞

觉得我分享的文章不错的话,可以关注一下哦,嘻嘻嘻🌞🌞

                                       

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值