用递归实现杨辉三角
给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。在杨辉三角中,每个数是它左上方和右上方的数的和。
示例:
输入: 5
输出:
[
[1],
[1,1],
[1,2,1],
[1,3,3,1],
[1,4,6,4,1]
]
#include <stdio.h> int main() { int i ,j,row ; int a[100][100]={0}; printf("请输入行数:"); scanf("%d",&row); for(i=0;i<row;i++) { for(j=0;j<i+1;j++) { if(j==0||j==i) { a[i][j]=1; } else { a[i][j]=a[i-1][j-1]+a[i-1][j]; } printf("%d ",a[i][j]); } printf("\n"); } }
#include <stdio.h> void printtriangle(int* arr, int lev, int end) { if(lev == end) return; arr[lev++] = 1; for(int i=0; i<lev; ++i) printf("%8d", arr[i]); arr[lev] = 0; for(int i=lev; i>0; --i) arr[i] += arr[i-1]; puts(""); printtriangle(arr, lev, end); } void triangle(int end) { int arr[100]; printtriangle(arr, 0, end); } int main(int argc, char *argv[]) { triangle(5); return 0; }
[此贴子已经被作者于2020-3-22 19:17编辑过]
#include <stdio.h> int fun(int m,int n) { if(m==1||n==1||m==n)return 1; return fun(m-1,n)+fun(m-1,n-1); } void main() { int i,j,n=8; for(i=0;i<n;i++) { for(j=0;j<n-1-i;j++)printf(" "); //按等腰三角形格式输出 for(j=0;j<=i;j++)printf("%2d ",fun(i+1,j+1)); printf("\n"); } }
[此贴子已经被作者于2020-3-23 00:50编辑过]