休息和回归有什么不同?

时间:2016-03-29 14:14:25

标签: matlab return break

我有两个Matlab代码,我想确定矩阵是否对称?我使用嵌套的“for循环”。此外:

  1. 在第一段代码中,我必须退出程序两次 ''打破''。
  2. 在第二个代码中,我得到了命令''Return''     退出该计划。
  3. 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
    

2 个答案:

答案 0 :(得分:3)

您发布的代码目前没有任何问题。这里有一些关于MATLAB自己的文档的详细说明,希望能为你清楚一点。

根据文档,break将突破forwhile循环:

  

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终止执行forwhile循环。 break语句之后循环中的语句不会执行。 在嵌套循环中,break仅从发生它的循环中退出。控制传递给该循环结束后的语句。它将控件保留在循环的外部块中。

return迫使MATLAB在到达函数末尾之前将控制权返回给调用函数。调用函数是调用包含要返回的调用的脚本或函数的函数。如果直接调用包含return的函数或脚本,则没有调用函数,MATLAB将控制权返回给命令提示符。

在条件块中,例如ifswitch,或在循环控制语句中,例如forwhilereturn语句不会退出循环;它退出脚本或函数并将控制权返回给调用函数或命令提示符。

在嵌套循环控件中,break突破了它所放置的循环并继续外循环。