使用递归思想实现螺旋方阵
- 语言 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()