螺旋方阵(Python)实现

使用递归思想实现螺旋方阵

  • 语言 python
  • 螺旋方阵的实现
  • 递归思想
思路

在这里插入图片描述
依次使用正序循环和逆序循环对最右边,最下边,最左边,最上边进行遍历,完成最外圈的循环,然后使用递归思想,重复以上操作,将内层依次遍历结束,注意:每次遍历,方阵的阶需减2

代码实现

n=int(input("请输入您要生成方阵的阶数:"))
#生成一个n阶方阵
a = [[0] * n for i in range(n)]
#螺旋方阵函数
#a为需要遍历的数组,j的初始值为0
# m初始值为1其作用是做累加操作
#k的初始值为0,每进行一次递归k+1,使循环可以顺利进行
#n为方阵的阶数
def lxfz(a,j,m,k,n):
    #遍历左边
    for i in range(n):
        a[i+k][j+k]=m
        m+=1
    #遍历下边
    for i in range(j+1,n):
        a[n-1+k][i+k]=m
        m+=1
    #遍历右边
    for i in range(n-2+k,-1+k,-1):
        a[i][n-1+k]=m
        m+=1
    #遍历上边
    for i in range(n-2+k,0+k,-1):
        a[j+k][i]=m
        m+=1
    #阶数-2.准备进入下一次内圈循环
    n=n-2
    #当阶符合条件时进行递归,直至全部遍历
    if n>0:
        #递归
        lxfz(a,j,m,k+1,n)
lxfz(a,0,1,0,n)
#遍历每一个二维数组中的中的每一个元素输出方阵
for i in a:
    for j in i:
        print(j, end='\t')
    print()

输出结果展示

在这里插入图片描述

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小徐404

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值