目录
🌞哈喽,大家好丫,你们的小郭子又来啦 ~
🌞今天我们继续聊一聊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;
}
好啦,今天的分享到这里就结束啦 ~🌞🌞
觉得我分享的文章不错的话,可以关注一下哦,嘻嘻嘻🌞🌞
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/73241.html