【问题标题】:What is the different between Break and Return? [closed]Break 和 Return 有什么区别? [关闭]
【发布时间】:2016-07-17 03:55:30
【问题描述】:

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

  1. 在第一个代码中,我必须退出程序两次 ''休息''。
  2. 在第二个代码中,我有命令“返回”到 程序退出。

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

【问题讨论】:

  • 查看breakreturn 的文档...
  • 如果方法中包含循环,则break结束循环,返回结束方法。
  • 矩阵对称性通过max(max(A-A'))<tol检查

标签: matlab return break


【解决方案1】:

您发布的代码目前没有问题。这是对 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 将脱离一个函数

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

【讨论】:

    【解决方案2】:

    。使用也没有问题。这完全取决于目的。

    break 终止forwhile 循环的执行。 break 语句之后的循环中的语句不执行。 在嵌套循环中,break 仅从它发生的循环中退出。控制传递到该循环结束之后的语句。它将控制保留在循环的外部块中。

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

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

    在嵌套循环控件中,break 跳出它所在的循环并继续外循环。

    【讨论】:

      猜你喜欢
      • 2014-05-24
      • 2011-08-26
      • 2015-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-25
      相关资源
      最近更新 更多