你好同学,两个函数,供参考
(1)递归调用
function m = mySpiralOnes(n)
if(n==1)
m = 1;
elseif(mod(n,4)==2) % 左
m = zeros(n);
m(:,n) = 1;
m(1:n-1,1:n-1) = mySpiralOnes(n-1);
elseif(mod(n,4)==3) % 下
m = zeros(n);
m(n,:) = 1;
m(1:n-1,2:n) = mySpiralOnes(n-1);
elseif(mod(n,4)==0) % 右
m = zeros(n);
m(:,1) = 1;
m(2:n,2:n) = mySpiralOnes(n-1);
elseif(mod(n,4)==1) % 上
m = zeros(n);
m(1,:) = 1;
m(2:n,1:n-1) = mySpiralOnes(n-1);
end
end
(2)循环
function m = mySpiralOnes2(ntot)%这里改成mySpiralOnes2为了方便放在一起验证
m = 1;
for i = 1:ntot
m1 = m;
if(mod(i,4)==2) % 左
m = zeros(i);
m(:,i) = 1;
m(1:i-1,1:i-1) = m1;
elseif(mod(i,4)==3) % 下
m = zeros(i);
m(i,:) = 1;
m(1:i-1,2:i) = m1;
elseif(mod(i,4)==0) % 右
m = zeros(i);
m(:,1) = 1;
m(2:i,2:i) = m1;
elseif(mod(i,4)==1) % 上
m = zeros(i);
m(1,:) = 1;
m(2:i,1:i-1) = m1;
end
end
end
验证:
>> mySpiralOnes(5)
ans =
1 1 1 1 1
1 0 0 0 0
1 0 1 1 0
1 0 0 1 0
1 1 1 1 0
>> mySpiralOnes2(5)
ans =
1 1 1 1 1
1 0 0 0 0
1 0 1 1 0
1 0 0 1 0
1 1 1 1 0
可见两个程序都能运行出正确的结果
答题不易,有帮助还望题主给个宝贵的采纳支持一下答主答题哟,(づ ̄3 ̄)づ╭❤~