用递归打印回形图案。BIT

本文介绍如何使用递归方法生成数字回形图案,强调理解方向和行列关系的重要性。示例代码展示了一种简洁的实现方式。
摘要由CSDN通过智能技术生成

网上的程序太复杂了自己动手写一个,注意方向与行列的关系即可。


代码如下:

#include<stdio.h>
#define N 500
static int c = 1, i, j, point = 0;
void swap( int n, int flag, int direction, int hang, int lie, int a[N][N]) 
{
  if(c == n*n){
    a[hang][lie] = c;
    point = 1;
  } 
  else 
  {
    if(direction == 1 && point == 0)
    {
      for(i=0; i<flag; i++) a[hang][lie++] = c++;
      swap(n, flag-1, ++direction, ++hang,  --lie, a);
    }
    
    if(direction == 2 && point == 0)
    {
      for(i=0; i<flag; i++) a[hang++][lie] = c++;
      swap(n, flag, ++direction, --hang,  --lie, a);
    }
    
    if(direction == 3 && point == 0)
    {
      for(i=0; i<flag; i++) a[hang][lie--] = c++;
      swap(n, flag-1, ++direction, --hang,  ++lie, a);
    }
    
    if(direction == 4 && point == 0)
    {
      for(i=0; i<flag; i++) a[hang--][lie] = c++;
      swap(n, flag, 1, ++hang,  ++lie, a);
    }
  }
  }

int main()
{   
    int hang = 0, lie = 0, a[N][N], n, flag, direction = 1;
    scanf("%d", &n) ;
    flag = n;
    swap(n, flag, direction, hang,  lie, a);
   for(i=0; i<n; i++)
     {
       for(j=0; j<n; j++)
      printf("%3d", a[i][j]);
       printf("\n");
     }
}

好不容易拿了次第一,截图榴莲哈哈哈

37. 晕

成绩 5 开启时间 2018年04月16日 星期一 14:00
折扣 0.8 折扣时间
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值