旋转数阵 递归 java

本文介绍了如何使用Java实现旋转数阵,包括顺转和逆转方阵的定义,设计思路着重于递归函数的使用,通过递归处理方阵的每一圈元素,最后给出程序实现。
摘要由CSDN通过智能技术生成

1. 案例提出

把前n2个正整数1,2,...,n2  从左上角开始,由外层至中心按顺时针方向螺旋排列所成的数字矩阵,称n阶顺转方阵;按逆时针方向螺旋排列所成的称n阶逆转方阵。

下面即为一个5阶顺转方阵

1  2   3   4   5        

16  17  18 19   6     

15  24  25 20   7       

14 23  22  21   8        

13 12  11  10   9       

5阶顺转方阵   

2. 设计要点

设计以顺转展开,设置二维数组a[h][v]存放方阵中第h行第v列的整数。

把n阶方阵从外到内分圈,外圈内是一个n-2阶顺转方阵,只是起始数,具有与原问题相同的特性属性。

因此,设置旋转方阵递归函数t(a,b,s,d),其中a是存储方阵元素的数组;b为每个方阵的起始位置;d是为a数组赋值的整数;s是方阵的阶数。

b赋初值0, 因数组下标从0开始,方阵的起始位置为(0,0)。以后每一圈后进入下一内方阵,起始位置b需增1。

d从1开始递增1取值,分别赋值给数组的各元素,至n为止。

s从方阵的阶数n开始,以后每一圈后进入下一内方阵,s需减2。

s=0时返回,作为递归的出口;

s=1时,即方阵只有一个数,显然为a[b][b]=d,返回。

s>1时,在函数t(a,b,s,d)中还需调用t(a,b+1,s-2,d

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值