Как преобразовать расчет цикла в математическую формулу? - PullRequest
0 голосов
/ 12 марта 2012

Извините, я не очень хорошо разбираюсь в математике. Но есть ли математическая формула, которая могла бы заменить приведенный ниже код, то есть вычислять точки, заданные qid, points и factor без цикла?

    for (int i = 1; i < qid; i++) 
    {
       points = points * factor;
    }

КакМогу ли я преобразовать приведенный выше код в математическую формулу, чем можно рассчитать в одной строке без цикла спасибо.

Ответы [ 4 ]

2 голосов
/ 12 марта 2012

при условии, что points инициализируется как 1, это эквивалентно points = factor^(qid-1) или для общего случая: points_after = points_before * factor^(qid-1)

Цикл повторяется qid - 1 раз [i получает значения: 1,2,...,qid-1, для значения i==qid вы не кратны], и в каждой итерации вы умножаете points на factor каждый раз, поэтому Вы умножаете это на factor^(qid-1)

1 голос
/ 12 марта 2012

По сути, ваш код представляет "очки = очки * фактор qid - 1 ".То, как вы представляете это в коде, зависит от языка / платформы.Например, вы можете использовать код Java следующим образом:

points *= Math.pow(factor, qid - 1);

Правильный ответ также зависит от типов points и factor, ни того, ни другогосказал нам ...

(также возможно, что вы намеревались начать цикл с 0 вместо 1, в этом случае тоже удалите - 1 из приведенного выше кода ...)

0 голосов
/ 12 марта 2012

баллов * = Math.pow (коэффициент, qid);

0 голосов
/ 12 марта 2012

Экспоненты.

points *= power( factor, qid - 1 ) 

Должно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...