鱼C论坛

 找回密码
 立即注册
查看: 2765|回复: 5

怎么样可以输出一个比较好看的杨辉三角阵呢?据说可以用递归初的怎么递归呢?

[复制链接]
发表于 2011-10-21 08:47:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<stdio.h>
#define M 20
void main()
{
    long a[M][M]={0};
    int i,j,n;
    printf("请输入n值:\nn=");
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
          for(j=0;j<=i;j++)
          {
                a[i][0]=a[i][i]=1;
          }
    }
     for(i=2;i<n;i++)
    {
          for(j=0;j<=i;j++)
          {
                if(j!=i)
                {
                      a[i][j]=a[i-1][j]+a[i-1][j-1];
                }
          }
    }
    for(i=0;i<n;i++)
    {
           
          for(j=0;j<=i;j++)
          {
                 printf("%-5d",a[i][j]);
          }
          printf("\n");
    }
  
}
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2011-10-21 08:50:52 | 显示全部楼层
这样不是很好看
猜一猜.jpg
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-10-21 15:38:25 | 显示全部楼层
我觉得已经很好看了。。。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-10-21 23:10:46 | 显示全部楼层
  1. #include<stdio.h>

  2. double factorial(int n)     //阶乘的计算
  3. {
  4.         if(n==0)
  5.                 return 1;
  6.         return n*factorial(n-1);
  7. }

  8. void print_yanghui_triangle(int n)
  9. {
  10.         int i;
  11.         double j;
  12.         if(n>0)
  13.                 print_yanghui_triangle(n-1);      //递归
  14.         for(i=0;i<=n;i++)
  15.         {
  16.                 j=factorial(n)/(factorial(i)*factorial(n-i));
  17.                 printf("%-5d",(int)j);
  18.         }
  19.         printf("\n");
  20. }

  21. void main()
  22. {
  23.         int n;
  24.     printf("请输入n值:\nn=");
  25.     scanf("%d",&n);
  26.         print_yanghui_triangle(n);
  27. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-10-23 23:58:13 | 显示全部楼层
#include<stdio.h>
int c(int x,int y)//求杨辉三角形中第x行第y行的值
{
        int z;
        if((y==1)||(y==x+1)) return (1);//若为x行的第1或第x+1列,则输出1
        z=c(x-1,y-1)+c(x-1,y);//否则,其值为前一行中第y-1列与第y列值之和
        return z ;
}
void main()
{
        int i,j,n=13;
        printf("N=");
        while(n>12)
                scanf("%d",&n);//控制输入正确的值以保证屏幕显示的图形正确
        for(i=0;i<=n;i++)//控制输出N行
        {
        for(j=0;j<12-i;j++) printf("   ");//控制输出第i行前面的空格
        for(j=1;j<i+2;j++) printf("%6d",c(i,j));//输出第i行的第j个值
        printf("\n");
        }
}
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-10-23 23:59:01 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-9 01:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表