我有两个Matlab代码,我想确定矩阵是否对称?我使用嵌套的“for循环”。此外:
Break和Return之间有什么问题吗?
我附上了我的代码。
第一个代码:
clc
clear all
A=input('Please enter your matrix=')
n=length(A);
temp=0;
for i=1:n-1
for j=i+1:n
if A(i,j)~=A(j,i)
temp=1;
break
end
end
if temp==1
disp('Matrix A is not symmetric.')
break
end
end
第二段代码:
clc
clear all
A=input('Please enter your matrix=')
n=length(A);
temp=0;
for i=1:n-1
for j=i+1:n
if A(i,j)~=A(j,i)
disp('Matrix A is not symmetric.')
return
end
end
end
答案 0 :(得分:3)
您发布的代码目前没有任何问题。这里有一些关于MATLAB自己的文档的详细说明,希望能为你清楚一点。
根据文档,break
将突破for
或while
循环:
break终止执行for或while循环。 break语句之后循环中的语句不会执行。 在嵌套循环中,break仅从发生它的循环中退出。控制传递给该循环结束后的语句。
例如,以下内容仅会突破最内层循环。
for k = 1:3
fprintf('k = %d\n', k);
for m = 1:4
fprintf('m = %d\n', m);
% Will go back and evaluate the loop using the next k
break
end
end
这将打印
k = 1
m = 1
k = 2
m = 1
k = 3
m = 1
要打破两个循环,你还需要外循环中的第二个break
。
for k = 1:3
fprintf('k = %d\n', k);
for m = 1:4
fprintf('m = %d\n', m);
% Will go back and evaluate the loop using the next k
break
end
% Continue executing code after the for loop
break
end
disp('This will still execute')
这将打印
k = 1
m = 1
This will still execute
另一方面,return
将突破功能。
返回强制MATLAB®在到达函数末尾之前将控制返回到调用函数。调用函数是调用包含要返回的调用的脚本或函数的函数。如果直接调用包含return的函数或脚本,则没有调用函数,MATLAB将控制权返回给命令提示符。
这意味着return
将完全退出函数(无论它是否在循环内)。
function looper()
for k = 1:3
fprintf('k = %d\n', k);
for m = 1:4
fprintf('m = %d\n', m);
% No more iterations of ANY loop will be executed
return
end
end
disp('This will not execute')
end
这将打印
k = 1
m = 1
答案 1 :(得分:1)
否即可。使用任何一个都没有问题。这完全取决于目的。
break
终止执行for
或while
循环。 break语句之后循环中的语句不会执行。
在嵌套循环中,break仅从发生它的循环中退出。控制传递给该循环结束后的语句。它将控件保留在循环的外部块中。
return
迫使MATLAB在到达函数末尾之前将控制权返回给调用函数。调用函数是调用包含要返回的调用的脚本或函数的函数。如果直接调用包含return的函数或脚本,则没有调用函数,MATLAB将控制权返回给命令提示符。
在条件块中,例如if
或switch
,或在循环控制语句中,例如for
或while
,return
语句不会退出循环;它退出脚本或函数并将控制权返回给调用函数或命令提示符。
在嵌套循环控件中,break
突破了它所放置的循环并继续外循环。