【问题标题】:While loop keeps going even though creteria has been met即使满足条件,while循环也会继续进行
【发布时间】:2018-04-06 14:55:43
【问题描述】:

您好,一旦我的变量 'fourMil' 为

% Sum of the Fibonacci pair numbers until 4 million

 clc
    clear

    fibo_list = [];
    for i = (0:31)
        if (i == 0 ||  i == 1 || i == 2)
            fibo_list(end+1) = i + 1;
        else
            fibo_list(end+1) = fibo_list(end) + fibo_list(end-1);
        end
    end

    filtered_list = [];
    fourMil = 4000000;

    while fourMil > 0
        for i = fibo_list     
            if mod(i,2) == 0
                filtered_list(end+1) = i;
                fourMil = fourMil - filtered_list(end);


            end
        end    
    end
    sumation = sum(filtered_list);
    fprintf('the sum of the Fibo numbers is %i\n', sumation)

【问题讨论】:

  • 您的示例代码运行良好,您确定这会重现您的问题吗?
  • 只有在for i=fibo_list 完成 之后才会检查while 条件。这是你的问题吗?
  • 一旦变量fourMil

标签: matlab fibonacci


【解决方案1】:

您可以在满足条件时使用 break 语句来中断 while 循环:

while fourMil > 0

    for i = fibo_list 

        if mod(i,2) == 0
            filtered_list(end+1) = i; 

            if (fourMil - filtered_list(end)<0) 
                break; %This will break the loop
            end

            fourMil = fourMil - filtered_list(end)
        end
    end    
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-10
    • 2021-08-07
    • 2016-03-14
    • 1970-01-01
    • 2021-02-07
    • 2021-03-11
    • 2013-04-08
    • 1970-01-01
    相关资源
    最近更新 更多