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

导读:本篇文章讲解 【C语言】——打印杨辉三角(递归),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

目录

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

🌞2. 实现思路

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

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


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

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

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

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

🌞1. 什么是【杨辉三角

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

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

 

🌞2. 实现思路

法一: 

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

法二: 

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

 

🌞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;
}

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

🌞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;
}
 

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

 

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/73241.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!