Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Имитация цикла 
:(
    Опции темы
Connie
Дата 16.2.2011, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 382
Регистрация: 12.8.2008

Репутация: 1
Всего: 9



4epT, у skipy  про это было, кратко так
два числа 0,0 и 0,0000000000001 равны или нет?

http://www.skipy.ru/technics/objCompPr.html#real_comp
Правильно сравнивать примерно так
Math.abs(a - b)<0.0001 если меньше, то считаем равным, предел нужно свой выбирать.

Это сообщение отредактировал(а) Connie - 17.2.2011, 13:36
PM MAIL WWW   Вверх
aleksandy
Дата 17.2.2011, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 260
Регистрация: 17.12.2006

Репутация: 4
Всего: 5



Цитата

max(a - b)<0.0001

Наверное, имелся ввиду abs
PM   Вверх
Connie
Дата 17.2.2011, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 382
Регистрация: 12.8.2008

Репутация: 1
Всего: 9



aleksandy, да, конечно smile
PM MAIL WWW   Вверх
AntonSaburov
Дата 17.2.2011, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



Цитата(Connie @  16.2.2011,  19:21 Найти цитируемый пост)
AntonSaburov, но ведь в функцию должен передаваться один параметр

Где-то написано, что потом нельзя вызывать метод с несколькими параметрами ?
Создатель топика программирует уже 2 года - наверно хватит ума сделать вызов с передачей массива, а внутри уже вызывать рекурсию.

PM MAIL WWW ICQ   Вверх
mbasil
Дата 19.2.2011, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 399
Регистрация: 4.5.2007
Где: Москва

Репутация: 2
Всего: 13



double a ..., b...;

Ну небось точное:

if( a == b ) . . .

а не точное, что нибудь в роде:

double DELTA = 0.001;

if( Math.abs(a-b) < DELTA ) . . .

То есть если вы получаете a или b вычислением,
то проверять на равенство нужно с учетом точности 
PM MAIL   Вверх
mbasil
Дата 19.2.2011, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 399
Регистрация: 4.5.2007
Где: Москва

Репутация: 2
Всего: 13



Если массив одномерный можно и схитрить, спрятав индекс и сумму в самом массив, например так:
Код

public class Test {
 public static void main(String[] args) {
        int i;
        int[] m1 = new int[10];
        StringBuilder sb = new StringBuilder();
        for( i = 0; i < m1.length; i++) {
                m1[i] = (int)(20 * Math.random());
                sb.append(m1[i]).append("  ");
        }
        double sum = 0;
        for( i = 0; i < m1.length; i++ ) {
                sum += m1[i];
        }
        System.out.println( sb );
        System.out.println( "sum = " + sum);
        int[] m2 = new int[m1.length+2];
        System.arraycopy( m1, 0, m2, 2, m1.length ); 
        m2[1] = m2[0] = 0;

        sum = sumRecursion( m2 );
        System.out.println( "sum = " + sum);
  }
  private static int sumRecursion( int[] p_m ) {
        if( p_m[1] < p_m.length-2 ) {
              p_m[0] +=  p_m[2+p_m[1]++];
              return sumRecursion( p_m );
        }
        return p_m[0];
  }
}

PM MAIL   Вверх
миг
Дата 19.2.2011, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 15.9.2008

Репутация: нет
Всего: 1



что за..  smile Циклы как раз и были созданы, чтобы перемещаться по массивам. А если без циклов, то напрашивается рекурсия.. Хотя рекурсия это не рациональный способ. Даже использование оператора goto было бы более рационально, чем рекурсия. smile 
--------------------
Oaks may fall when reeds stand the storm.
PM MAIL   Вверх
4epT
Дата 20.2.2011, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 784
Регистрация: 13.8.2007

Репутация: нет
Всего: 3



Цитата(миг @ 19.2.2011,  19:13)
что за..  smile Циклы как раз и были созданы, чтобы перемещаться по массивам. А если без циклов, то напрашивается рекурсия.. Хотя рекурсия это не рациональный способ. Даже использование оператора goto было бы более рационально, чем рекурсия. smile

goto в Java нет) разве что break/continue label;

на таким способом не решишь эту задачу. только через рекурсию ... самый простой способ наверное обернуть те два метода которые написал XoJIoD, в функцию с одним параметром =)

а насчет точного и неточного сравнения, так что то и не понял ... то есть как это делается все понятно, но почему то кажется что a == b это как раз не точно сравнение.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0593 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.