#java #loops #for-loop #nested-loops
#java #циклы #for-цикл #вложенные циклы
Вопрос:
Итак, это вопрос: определите, сколько итераций следующей операции требуется, пока не будет достигнуто условие (a * a b * b)> 4:
newA = a * a — b * b x
newB = 2 * a * b y
a = newA
b = newB
Я застрял на этом некоторое время. Буду признателен за любую помощь.
public static int findEscapeCount(double x, double y, int maxIterations)
{
int count =0;
double a;
double b;
double newA;
double newB;
for(a=0; a<maxIterations; a )
{
for(b=0; b<maxIterations; b )
{
newA = a * a - b * b x;
newB = 2 * a * b y;
a = newA;
b = newB;
if((a * a b * b) < 4)
{
count = count 1;
}
}
}
return count;
}
Комментарии:
1. Исправить отступы. Какой результат вы получаете?
2. Расслабься, @JoeC, ОП опубликовал свой код. Это законный запрос.
3. вы должны использовать один цикл while, чтобы проверить условие (a * a b * b) < 4 и увеличивать a amp; b на каждой итерации. затем ведите подсчет итераций. он автоматически завершится, когда условие будет выполнено, и ваш счет будет правильным.
4. Я не указал, каков мой результат. Когда x и y оба равны 1, я получаю результат 1, когда он должен быть 2, например. Я постараюсь сделать то, что вы сказали @big_water спасибо за совет.
5. И спасибо @nicomp, я не пытаюсь копировать и вставлять код для ответа, я пытаюсь получить помощь.
Ответ №1:
Если я правильно понимаю проблему, это должно соответствовать тому, что вам нужно:
public static int findEscapeCount(double x, double y, int maxIterations)
{
int count =0;
double a;
double b;
double newA;
double newB;
while((a * a b * b) > 4)
{
a ;
b ;
newA = a * a - b * b x;
newB = 2 * a * b y;
a = newA;
b = newB;
count ;
}
return count;
}
РЕДАКТИРОВАТЬ: после повторного прочтения вопроса я даже не уверен, необходимо ли увеличивать «a» и «b» на каждой итерации, поскольку вы в любом случае переназначаете их на каждой итерации… но вам нужно будет определить это из ваших требований!
Комментарии:
1. Дело в том, что мне нужно предоставить максимальное количество итераций. Итак, если после этого максимального времени условие все еще не выполнено, то ответом будет заданное количество максимальных итераций. Я не уверен, как это сделать в цикле while.
2. вы можете проверить переменную «count» с помощью оператора «if» и, если она равна «maxIterationCount», затем выйти из цикла while с помощью оператора «break;» и вернуть счетчик
3. Я переключил «больше», чем на «меньше», и попробовал это, и это все еще неверно. Я не уверен, почему кажется, что это сработает. Он возвращает 1 каждый раз, независимо от аргумента.
4. @JonahBartz Я думаю, вы хотите сохранить его как больше, чем в этом случае. Разве это не условие в вашем вопросе?
5. @JonahBartz, какие числа вы используете для ввода в функцию (x и y)