Я должен показать тот журнал (n!) = Θ (n · журнал (n)).
Подсказка состояла в том, учитывая, что я должен показать верхнюю границу с nn и показать нижнюю границу с (n/2) (n/2). Это не кажется всем этим интуитивным мне. Почему это имело бы место? Я могу определенно видеть, как преобразовать nn в n · журнал (n) (т.е. журнал обе стороны уравнения), но это - вид работы назад.
Каков был бы корректный подход для занятия этой проблемой? Я должен потянуть дерево рекурсии? Нет ничего рекурсивного об этом, так, чтобы не походил на вероятный подход..
Помните, что
log(n!) = log(1) + log(2) + ... + log(n-1) + log(n)
вы можете получить верхнюю границу
log(1) + log(2) + ... + log(n) <= log(n) + log(n) + ... + log(n)
= n*log(n)
, и вы можете получить нижнюю оценку, делая подобную вещь после выброса первой половины суммы:
log(1) + ... + log(n/2) + ... + log(n) >= log(n/2) + ... + log(n)
= log(n/2) + log(n/2+1) + ... + log(n-1) + log(n)
>= log(n/2) + ... + log(n/2)
= n/2 * log(n/2)
У меня была та же проблема с отчетами PartCover. Поэтому я пытался сделать так, чтобы он работал правильно, и я только что обнаружил, что проблема была в двух XSLT-файлах, которые поставляются с дистрибутивом PartCover.
Я исправил эти файлы и теперь все работает нормально для меня:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxml="urn:schemas-microsoft-com:xslt">
<xsl:output method="html" indent="yes"/>
<xsl:template match="/">
<xsl:variable name="cov0style" select="'background:#E79090;text-align:right;'"/>
<xsl:variable name="cov20style" select="'background:#D79797;text-align:right;'"/>
<xsl:variable name="cov40style" select="'background:#D7A0A0;text-align:right;'"/>
<xsl:variable name="cov60style" select="'background:#C7A7A7;text-align:right;'"/>
<xsl:variable name="cov80style" select="'background:#C0B0B0;text-align:right;'"/>
<xsl:variable name="cov100style" select="'background:#D7D7D7;text-align:right;'"/>
<table style="border-collapse: collapse;">
<tr style="font-weight:bold; background:whitesmoke;">
<td colspan="2">Coverage by assembly</td>
</tr>
<xsl:variable name="asms" select="/PartCoverReport/Assembly"/>
<xsl:for-each select="$asms">
<xsl:variable name="current-asm-node" select="."/>
<tr>
<xsl:element name="td">
<xsl:attribute name="style">background:ghostwhite; padding: 5px 30px 5px 5px;</xsl:attribute>
<xsl:value-of select="$current-asm-node/@name"/>
</xsl:element>
<xsl:variable name="codeSize" select="sum(/PartCoverReport/Type[@asmref=$current-asm-node/@id]/Method/pt/@len)+0"/>
<xsl:variable name="coveredCodeSize" select="sum(/PartCoverReport/Type[@asmref=$current-asm-node/@id]/Method/pt[@visit>0]/@len)+0"/>
<xsl:element name="td">
<xsl:if test="$codeSize=0">
<xsl:attribute name="style">
<xsl:value-of select="$cov0style"/>
</xsl:attribute>
0%
</xsl:if>
<xsl:if test="$codeSize > 0">
<xsl:variable name="coverage" select="ceiling(100 * $coveredCodeSize div $codeSize)"/>
<xsl:if test="$coverage >= 0 and $coverage < 20">
<xsl:attribute name="style">
<xsl:value-of select="$cov20style"/>
</xsl:attribute>
</xsl:if>
<xsl:if test="$coverage >= 20 and $coverage < 40">
<xsl:attribute name="style">
<xsl:value-of select="$cov40style"/>
</xsl:attribute>
</xsl:if>
<xsl:if test="$coverage >= 40 and $coverage < 60">
<xsl:attribute name="style">
<xsl:value-of select="$cov60style"/>
</xsl:attribute>
</xsl:if>
<xsl:if test="$coverage >= 60 and $coverage < 80">
<xsl:attribute name="style">
<xsl:value-of select="$cov80style"/>
</xsl:attribute>
</xsl:if>
<xsl:if test="$coverage >= 80">
<xsl:attribute name="style">
<xsl:value-of select="$cov100style"/>
</xsl:attribute>
</xsl:if>
<xsl:value-of select="$coverage"/>%
</xsl:if>
</xsl:element>
</tr>
</xsl:for-each>
</table>
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxml="urn:schemas-microsoft-com:xslt">
<xsl:output method="html" indent="no"/>
<xsl:template match="/">
<xsl:variable name="cov0style" select="'background:#FF4040;text-align:right;'"/>
<xsl:variable name="cov20style" select="'background:#F06060;text-align:right;'"/>
<xsl:variable name="cov40style" select="'background:#E78080;text-align:right;'"/>
<xsl:variable name="cov60style" select="'background:#E0A0A0;text-align:right;'"/>
<xsl:variable name="cov80style" select="'background:#D7B0B0;text-align:right;'"/>
<xsl:variable name="cov100style" select="'background:#E0E0E0;text-align:right;'"/>
<table style="border-collapse: collapse;">
<tr style="font-weight:bold; background:whitesmoke;"><td colspan="2">Coverage by class</td></tr>
<xsl:for-each select="/PartCoverReport/Type">
<tr>
<xsl:element name="td">
<xsl:attribute name="style">background:ghostwhite; padding: 5px 30px 5px 5px;</xsl:attribute>
<xsl:value-of select="@name"/>
</xsl:element>
<xsl:variable name="codeSize" select="sum(./Method/pt/@len)+0"/>
<xsl:variable name="coveredCodeSize" select="sum(./Method/pt[@visit>0]/@len)+0"/>
<xsl:element name="td">
<xsl:if test="$codeSize=0">
<xsl:attribute name="style"><xsl:value-of select="$cov0style"/></xsl:attribute>
0%
</xsl:if>
<xsl:if test="$codeSize > 0">
<xsl:variable name="coverage" select="ceiling(100 * $coveredCodeSize div $codeSize)"/>
<xsl:if test="$coverage >= 0 and $coverage < 20"><xsl:attribute name="style"><xsl:value-of select="$cov20style"/></xsl:attribute></xsl:if>
<xsl:if test="$coverage >= 20 and $coverage < 40"><xsl:attribute name="style"><xsl:value-of select="$cov40style"/></xsl:attribute></xsl:if>
<xsl:if test="$coverage >= 40 and $coverage < 60"><xsl:attribute name="style"><xsl:value-of select="$cov60style"/></xsl:attribute></xsl:if>
<xsl:if test="$coverage >= 60 and $coverage < 80"><xsl:attribute name="style"><xsl:value-of select="$cov80style"/></xsl:attribute></xsl:if>
<xsl:if test="$coverage >= 80"><xsl:attribute name="style"><xsl:value-of select="$cov100style"/></xsl:attribute></xsl:if>
<xsl:value-of select="$coverage"/>%
</xsl:if>
</xsl:element>
</tr>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>
Надеюсь, вы найдете это полезным. Кроме того, приветствуются любые отзывы об этих файлах, поэтому мы можем предоставить коммуналке правильные файлы.
-121--3311567-Да можно использовать пользовательские схемы URI . Однако обратите внимание, что клиенты без приложения не смогут использовать ссылки.
Если это так, то можно также «передать параметры» запускаемому приложению?
Как только ваше приложение зарегистрируется для данной схемы, оно все ваше.
-121--1176572-См. Аппроксимация Стирлинга :
ln (n!) = n * ln (n) - n + O (ln (n))
, где последние члены 2 менее значимы, чем первый.
Помогают вам дальше, где Mick Sharpe оставила вас:
Это отключение довольно простое: Смотри http://en.wikipedia.org/wiki/logarithm -> Групповая теория
log (n!) = log (n * (n - 1) * (n-2) *. .. * 2 * 1) = log (n) + log (n - 1) + ... + log (2) + log (1)
Подумайте о N как Infinitly Big . Что такое бесконечный минус один? или минус два? И т.д.
Журнал (INF) + log (inf) + log (inf) + ... = inf * log (inf)
, а затем подумайте о inf как n.