杨辉三角的递归实现c语言
时间: 2023-12-24 20:24:46 浏览: 30
以下是杨辉三角的递归实现C语言代码:
```c
#include <stdio.h>
int YangHui(int r, int c) {
return (c == 1 || c == r) ? 1 : YangHui(r - 1, c - 1) + YangHui(r - 1, c);
}
int main() {
int n; // 杨辉三角的前n行
int i, j;
printf("需要输出几行杨辉三角(0~20):");
scanf("%d", &n);
for (i = 1; i <= n; i++) { // 控制每行
for (j = 0; j < n - i; j++) { // 每行的前n-i个位置输出空格
printf(" "); // 每次输出3个空格
}
for (j = 1; j <= i; j++) { // 当前的第i行有j个元素,也就是:当前行是第i行,当前行一共有j列
printf("%6d", YangHui(i, j));
}
printf("\n");
}
return 0;
}
```
该代码中,`YangHui`函数用于计算杨辉三角的每一项,`main`函数用于控制输出杨辉三角的前n行。在输出每一行时,先输出一定数量的空格,然后再输出该行的每一项。
相关问题
杨辉三角函数递归c语言程序
以下是一个使用递归函数实现杨辉三角的C语言程序:
#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;
}
这个程序使用了递归函数getadd来计算杨辉三角的每个元素。getadd函数的定义中,当b等于1或者b等于a时,返回1,否则返回getadd(a-1, b-1) + getadd(a-1, b)的值。在主函数中,用户输入所需的杨辉三角行数,并使用两个嵌套的循环来输出每个元素。输出使用"%6ld"来格式化输出,使得输出的数字能够对齐。最后,程序返回0表示正常结束。
希望这个答案能够满足你的需求。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [【C语言】——打印杨辉三角(递归)](https://blog.csdn.net/weixin_51331210/article/details/127344401)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [C语言打印杨辉三角(递归)(数学逻辑)](https://blog.csdn.net/m0_60338933/article/details/123198555)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
杨辉三角c语言递归函数
以下是杨辉三角的C语言递归函数实现:
```c
#include <stdio.h>
// 递归函数
int func(int m, int n) {
if (n == 0 || n == m) // 递归终止条件
return 1;
return func(m - 1, n) + func(m - 1, n - 1); // 核心代码
}
int main(void) {
int m, i, j;
m = 6; // 打印前6行杨辉三角
for (i = 0; i <= m; i++) {
for (j = 0; j < m - i; j++)
printf(" ");
for (j = 0; j <= i; j++)
printf("%6d", func(i, j));
printf("\n");
}
return 0;
}
```