javascript利用二位数组打印n阶矩形螺旋方阵,如下 n=5 9 8 7

JavaScript015

javascript利用二位数组打印n阶矩形螺旋方阵,如下 n=5 9 8 7,第1张

首先要明确,在JavaScript里面没有二维数组的概念,只能用普通数组来模拟出二维数组的效果。

其次,对二维数组进行分析,可以得出循环的次数的规律,即偶数/2或者奇数对2取整后加1。

再次,可以看出方阵是从右下角开始,逆时针逐渐增加得来。

那么,可以写出以下函数:

function

printAll(number

,start){

//number为N阶矩阵,start为开始的数字,默认值分别是5和1。

number

=

number

||

5

start

=

start

||

1

//

c为求出的循环次数

var

c

=

number%2

==

0

?

number/2

:

Math.ceil(number/2)

//

定义一个一维数组,方便生成二维数组

var

arr

=

[]

//

生成二维数组并初始化,值为0

for(

var

i

=

0

i

<

number

i++){

arr[i]

=

[]

for(var

j

=

0

j

<

number

j++){

arr[i].push(0)

}

}

//

循环一次的函数

function

circle(c){

//

从下往上赋值

for(

i

=

number

-

c

-

1

i

>=

c

i--){

arr[i][number

-

c

-

1]

=

start++

}

//

从右往左赋值

for(i

=

number

-

c

-

2

i

>=

c

i--){

arr[c][i]

=

start++

}

//

从上往下赋值

for(

i

=

c

+

1

i

<

number

-

c

i++){

arr[i][c]

=

start++

}

//

从左往右赋值

for(i

=

c

+

1

i

<

number

-c

-

1

i++){

arr[number

-

c

-

1][i]

=

start++

}

}

//

循环给数组赋值

for(j

=

0

j

<

c

j++){

circle(j)

}

//

在控制台查看生成的数组信息,可注释掉

for(

i

=

0

i

<

number

i++){

console.log(arr[i])

}

}

希望可以帮到你,思路和函数全给你了

  螺旋矩阵是指一个呈螺旋状的矩阵,它的数字由第一行开始到右边不断变大,向下变大,向左变大,向上变大,如此循环,接下来用JS实现螺旋矩阵。

  核心点是在特殊拐点以及缩短环数处做操作。

没有rando函数。只有rand和randn

1.rand()

生成(0,1)区间上均匀分布的随机变量。基本语法:

rand([M,N,P ...])

生成排列成M*N*P... 多维向量的随机数。如果只写M,则生成M*M矩阵;如果参数为[M,N]可以省略掉方括号。一些例子:

rand(5,1) %生成5个随机数排列的列向量,一般用这种格式

rand(5) %生成5行5列的随机数矩阵

rand([5,4]) %生成一个5行4列的随机数矩阵

生成的随机数大致的分布。

x=rand(100000,1)

hist(x,30)

由此可以看到生成的随机数很符合均匀分布。(视频教程会略提及hist()函数的作用)

2.randn()

生成服从标准正态分布(均值为0,方差为1)的随机数。基本语法和rand()类似。

randn([M,N,P ...])

生成排列成M*N*P... 多维向量的随机数。如果只写M,则生成M*M矩阵;如果参数为[M,N]可以省略掉方括号。一些例子:

randn(5,1) %生成5个随机数排列的列向量,一般用这种格式

randn(5) %生成5行5列的随机数矩阵

randn([5,4]) %生成一个5行4列的随机数矩阵

3、matlab中random函数——通用函数,求各分布的随机数据,其用法:

y = random('norm',A1,A2,A3,m,n)

式中:A1,A2,A3为分布的参数,m,n用来指定随机数的行和列,name的取值有相关的表格来参照。

例:产生一个3行4列均值为2、标准差为0.3的正态分布随机数:

>>y =random('norm',2,0.3,3,4)

y =

2.1613 2.2587 1.8699 2.8308

2.5502 2.0956 2.1028 1.5950

1.3223 1.6077 3.0735 2.9105