2012-03-12 2 views
0

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

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

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

+0

Какой язык/платформа? –

+0

Значение расчетных точек ur будет одинаковым для бесконечного числа. из циклов .. R u lookng для того же ..? – Teja

+0

приведенный выше код находится в java – Tamer

ответ

2

предполагая 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)

+0

как вы это понимаете? используете ли вы ручку и бумагу для отслеживания цикла с тестовыми значениями и пытаетесь проверить несколько уравнений или что-то еще? – Tamer

+0

@Tamer: не нужно, цикл повторяется 'qid-1' раз, потому что он от 1 до' qid' [не включает 'qid'] и увеличивается на 1 на каждой итерации, таким образом вы получаете коэффициент« points = points * * factor * ... * factor' ['qid-1' times], который по определению« points * factor^(qid-1) » – amit

+0

Я хотел понять, как это сделать сам по себе, я хотел спросить что-то вроде того, какие курсы я должен изучать, чтобы иметь возможность сделать это :) – Tamer

1

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

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

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

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

0

Показатели.

points *= power(factor, qid - 1) 

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

+0

Цикл повторяет 'qid-1' раз. – amit

+0

Вы правы. Итак, если qid равно 5, цикл будет работать 4 раза, а если коэффициент равен .5, это приведет к .5 * .5 * .5 * .5, но если только QID был показателем , это было бы 5 раз. Отредактировано, спасибо. – DanRedux

0

баллы * = Math.pow (factor, qid);

+0

Цикл повторяет 'qid-1' раз. – amit