Объявление PERSISTENT должно предшествовать любому использованию переменной - PullRequest
0 голосов
/ 01 марта 2019

Работая над домашним заданием по матлабу, я наткнулся на очень странную ошибку.Вот мой код:

function [z,times] = Divide(x,y)

    persistent times;

    if (y == 0)
        if (isempty(times))
            times = 1;
        else
            times = times + 1;
        end
    end

    z = x/y;
end

При запуске это дает мне ошибку:

Error: File: Divide.m Line: 3 Column: 16
The PERSISTENT declaration must precede any use of the variable times.

Это странно, потому что говорит мне, что мне нужно объявить переменную как постоянную передЯ объявляю это как постоянный (!?).Я понятия не имею, что я делаю здесь неправильно, поэтому, если есть какой-то странный обходной путь, который я должен использовать, пожалуйста, скажите мне.

1 Ответ

0 голосов
/ 01 марта 2019

Сообщение об ошибке означает: вы использовали 'times' перед тем, как объявить его как постоянную переменную.Поскольку вы использовали «раз» в возвращаемых переменных.

Одним из решений может быть сохранение двух разных переменных для «раз», одна для постоянных, а другая для возвращаемой переменной.

Вставьте мойизменить здесь для вашей справки.Удачи!

function [z,times] = Divide(x,y)
    persistent p_times;

    if (y == 0)
        if (isempty(p_times))
            p_times = 1;
        else
            p_times = p_times + 1;
        end
    end

    times = p_times;
    z = x/y;
end
...