Задача: Посчитать стоимость строения (в игре) определенного уровня, с учетом стоимости предыдущих. имеется формула удорожания следующего уровня (60*1,5^(УРОВЕНЬ-1)) Пример: Есть рудник металла 5 уровня. 1 ур. - 60 2 ур - 90 3 ур. - 135 4 ур. - 203 5 ур. - 304 Делаю: Чтобы найти сумму первых 5 уровней, Код (Text): 60+(5-1)*((60*1,5^(УРОВЕНЬ-1)) ответ должен быть 60+90+135+203+304=792, но он получается 151 863 Собственно, где я не прав?( Формула нахождения n-члена прогрессии
Господи, а определение-то арифметической прогрессии хоть помним? Сумничать с формулой легко, а вот вспомнить, что показатель d всегда должен быть одним и тем же числом, а энный член арифметической прогрессии отличается от предыдущих на d(n-1). А тут что? 1. 90-60=30 2. 135-90=45 Дальше уже считать не надо, d не одинаковый.
Прогрессия у тебя в показателе степени в формуле сложных процентов. Именно по ней, если я визуально не ошибаюсь, у тебя рассчитывается стоимость чего-то на следующем уровне. Там вот именно этот показатель, в который возводится 1.5, и является самой прогрессией. n = уровень C = 60 * (1 + 50/100)^n-1 C = 60 * (1 + 0.5)^n-1 C = 60 * 1.5^n-1 Уровень 3: (Расписываю очень подробно, математики меня бы за это палками избили) An = 0 + 1(3 - 1) An = 2 C = 60 * 1.5^An В полном (комплексном виде выглядит это так): C = 60 * 1.5^An-1 Т.е вернулись к исходному варианту, а если вспомним, что с самого начала я поставил An в качестве члена арифметической прогрессии, то что мы получим в выдодах? Получим мы вопрос: зачем топикстартеру вообще нужна была какая-то прогрессия? Да и зачем тему было открывать? Тут не получится арифметической, потому что общий член вовсе не общий. Можно, конечно, натянуть геометрическую прогрессию с общим членом 1.5.
Хе, пока думал как посчитать тут уже написали... Ну, во-первых, это действительно нефига не арифметическая прогрессия. Прогрессия есть, но геометрическая и в коэффициенте подорожания. Далее, вот это (60*1,5^(УРОВЕНЬ-1)) это формула наценки по сравнению с предыдущим уровнем или стоимость здания определенного уровня? Т.е. во втором случае здания стоят: и их сумма: Код (Text): 791.25 В первом случае здания стоят: и их сумма: Код (Text): 1773.75 Так вот для второго случая сумма зданий вычисляется с применением формулы геометрической прогрессии: Т.е. Код (Text): 60*(1-1.5^5)/(1-1.5) Для первого случая формулу пока не придумал...
Скиньте, пожалуйста, код рекурсивной функции для вычисления арифметической прогрессии на PHP. Заранее 100 "спасибов")
Код (PHP): /* * * * Арифметическая прогрессия * * @param $a1 - первый член прогрессии * @param $d - Разность * @Param $n - номер члена прогрессии * В нашем случае $n обязательно должен быть инициализирован "1" * * @param $max - максимальное значение прогрессии */ function progression($a1, $d, $n, $max) { $val = $a1 + (($n - 1) * $d); $n++; echo "<br>".$val; if ($val < $max - $d) { progression($a1, $d, $n, $max); } } progression(1, 2, 1, 10); /* * вывод * * 1 * 3 * 5 * 7 * 9 */
не испортить. начинаться должно с /** а там че хочешь пиши, но если будешь использовать ключевые слова в правильном порядке, то будут потом подсказки в IDE и как оказалось даже в рефлекшенах вроде вылезать. Добавлено спустя 1 минуту 33 секунды: более того, можно даже отдельную переменную откомментить так, чтобы были подсказки удобные, ну там методы объекта например вылезали при наборе. /** @var SomeClass $peremennaya */ $peremennaya->а тут подсказки лезут
По поводу этого я в курсе. Мне интересно, выше комментарий который я привел, там есть какие-нибудь ошибки, неточности? кроме *, которая вовсе и не ошибка, как ты сказал. А в чем шаманство? И почему уже не PhpDoc???
ну так если ты про пробел между звездочками, то это не специально, NetBeans добавил. Но в любом случае, я не знал. Добавлено спустя 43 секунды: Не знал насчет:
во-первых /** (именно слэш-астериск-астериск, а не слэш-астериск-пробел-астериск-пробел-астериск) и во-вторых нотация переменных @param type name desctiption. а у тебя что? у тебя парам-имя-тире-описание. в общем смотри общепринятые phpdoc и javadoc. программист-то поймет твою филькину грамоту, но её же пишут скорее для генераторов документации и вот последние-то тебя и не поймут.