<xsl:variable name="y">
<xsl:call-template name="sqr">
<xsl:with-param name="x" select="6"/>
</xsl:call-template>
</xsl:variable>
ΠΠ±ΡΠ°ΡΠΈΠΌ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ y Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ²ΡΠ΅ Π½Π΅ ΡΠΈΡΠ»Π΅Π½Π½ΡΠΉ ΡΠΈΠΏ. ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ ΡΠ»Π΅ΠΌΠ΅Π½Ρ
<xsl:value-of select="$y"/>
Π²ΡΠ²Π΅Π΄Π΅Ρ ΡΡΡΠΎΠΊΡ "36", ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½Π΅ ΡΠΈΡΠ»ΠΎ, Π° Π΄Π΅ΡΠ΅Π²ΠΎ, ΠΈ 36 Π»ΠΈΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΠΊΠΎΠ½Π²Π΅ΡΡΠ°ΡΠΈΠΈ Π² ΡΡΡΠΎΠΊΡ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ xsl:value-of.
ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ°Π±Π»ΠΎΠ½Π° Π² Π²ΠΈΠ΄Π΅ Π±ΡΠ»Π΅Π²ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΡΡΡΠΎΠΊΠΈ ΠΈΠ»ΠΈ ΡΠΈΡΠ»Π°, ΡΠ»Π΅Π΄ΡΠ΅Ρ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄Π»Ρ ΡΠ²Π½ΠΎΠ³ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠΏΠΎΠ².
ΠΡΠΈΠΌΠ΅ΡΠΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ
<xsl:variable name="result">
<xsl:call-template name="sqr">
<xsl:with-param name="x" select="6"/>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="sqr-string" select="string($result)"/>
<xsl:variable name="sqr-number" select="number($result)"/>
ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ sqr-string ΠΈ sqr-number Π±ΡΠ΄ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠ΅ ΠΈ ΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ.
ΠΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ»ΠΎΠΆΠ½Π΅Π΅ ΠΎΠ±ΡΡΠΎΠΈΡ Π΄Π΅Π»ΠΎ Ρ Π±ΡΠ»Π΅Π²ΡΠΌ ΡΠΈΠΏΠΎΠΌ. ΠΡΠΈ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠΈ Π΄Π΅ΡΠ΅Π²Π° ΠΊ Π±ΡΠ»Π΅Π²ΠΎΠΌΡ ΡΠΈΠΏΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄Π΅Ρ "ΠΈΡΡΠΈΠ½Π°", ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ°ΠΊΠΎΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π² Π΄Π²Π° ΡΠ°Π³Π°: ΡΠ½Π°ΡΠ°Π»Π° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ Π΄Π΅ΡΠ΅Π²ΠΎ Π² ΡΠΈΡΠ»ΠΎ, ΡΠΎΠ»ΡΠΊΠΎ Π·Π°ΡΠ΅ΠΌ ΡΠΈΡΠ»ΠΎ Π² Π±ΡΠ»Π΅Π²ΡΠΉ ΡΠΈΠΏ.
ΠΡΠΈΠΌΠ΅ΡΠ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ°Π±Π»ΠΎΠ½ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ less-than ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² x ΠΈ y. ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ less-than ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ Π±ΡΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ.
ΠΠΈΡΡΠΈΠ½Π³ 11.7. ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ Π±ΡΠ»Π΅Π²ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:variable name="result">
<xsl:call-template name="less-than">
<xsl:with-param name="x" select="2"/>
<xsl:with-param name="y" select="1"/>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="less-than" select="boolean(number($result))"/>
<xsl:value-of select="$less-than"/>
</xsl:template>
<xsl:template name="less-than">
<xsl:param name="x"/>
<xsl:param name="y"/>
<xsl:value-of select="number($x < $y)"/>
</xsl:template>
</xsl:stylesheet>
ΠΡΠΈΠΌΠ΅ΡΠΡΠΎΡΡΡΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ ΡΠ°Π±Π»ΠΎΠ½Π°-ΡΡΠ½ΠΊΡΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ°Π±Π»ΠΎΠ½, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΡΠΌΠ°ΡΠΈΡΡΠ΅Ρ Π΄Π°ΡΡ Π² Π½ΡΠΆΠ½ΠΎΠΌ Π²ΠΈΠ΄Π΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ 7 Π°Π²Π³ΡΡΡΠ° 93 Π³ΠΎΠ΄Π° ΠΊΠ°ΠΊ "07-Aug-1993".
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΡΠΎΡ ΡΠ°Π±Π»ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π½Ρ, ΠΌΠ΅ΡΡΡΠ° ΠΈ Π³ΠΎΠ΄Π°. ΠΠΎΠ΄, ΠΈΠΌΠ΅ΡΡΠΈΠΉ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌΠ΅Π½ΡΡΠ΅Π΅ 25, ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΡΡΠΈΡΠ°ΡΡ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°ΡΠΈΠΌ Π½ΠΎΠ²ΠΎΠΌΡ ΡΡΡΡΡΠ΅Π»Π΅ΡΠΈΡ.
ΠΠΈΡΡΠΈΠ½Π³ 11.8. Π¨Π°Π±Π»ΠΎΠ½, ΡΠΎΡΠΌΠ°ΡΠΈΡΡΡΡΠΈΠΉ Π΄Π°ΡΡ<xsl:template name="format-date">
<xsl:param name="day"/>
<xsl:param name="month"/>
<xsl:param name="year"/>
<xsl:value-of select="format-number($day, '00')"/>
<xsl:text>-</xsl:text>
<xsl:choose>
<xsl:when test="$month = 1">Jan</xsl:when>
<xsl:when test="$month = 2">Feb</xsl:when>
<xsl:when test="$month = 3">Mar</xsl:when>
<xsl:when test="$month = 4">Apr</xsl:when>
<xsl:when test="$month = 5">May</xsl:when>
<xsl:when test="$month = 6">Jun</xsl:when>
<xsl:when test="$month = 7">Jul</xsl:when>
<xsl:when test="$month = 8">Aug</xsl:when>
<xsl:when-test="$month = 9">Sen</xsl:when>
<xsl:when test="$month = 10">Oct</xsl:when>
<xsl:when test="$month = 11">Nov</xsl:when>
<xsl:when test="$month = 12">Dec</xsl:when>
</xsl:choose>
<xsl:text>-</xsl:text>
<xsl:choose>
<xsl:when test="$year <= 25">
<xsl:value-of select="format-number($year +2000, '0000')"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="format-number($year, '0000')"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
Π Π΅ΠΊΡΡΡΠΈΡ
ΠΡΡΡΡΡΡΠ²ΠΈΠ΅ Π² XSLT ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ (ΠΎΡΠ΅Π½ΠΈΠΌ ΠΊΡΠ°ΡΠΎΡΡ ΡΡΠΎΠΉ ΡΠ°Π²ΡΠΎΠ»ΠΎΠ³ΠΈΠΈ) ΠΊΠ°ΠΊ, Π²ΠΏΡΠΎΡΠ΅ΠΌ, ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅, Π΄Π΅Π»Π°Π΅Ρ ΡΡΠΎΡ ΡΠ·ΡΠΊ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π½Π΅ΠΏΠΎΡ ΠΎΠΆΠΈΠΌ Π½Π° ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ·ΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π ΡΡΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΌΡ ΠΎΠΏΠΈΡΠ΅ΠΌ ΡΠ΅ΠΊΡΡΡΠΈΡ [ΠΠΎΡΠΌΠ΅Π½ ΠΈ Π΄Ρ. 2000, ΠΠ½ΡΡ 2000] β ΡΡΠ΅Π·Π²ΡΡΠ°ΠΉΠ½ΠΎ ΠΏΡΠΎΡΡΡΡ, Π½ΠΎ Π² ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΌΠΎΡΠ½ΡΡ ΡΠ΅Ρ Π½ΠΈΠΊΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π² ΠΊΠΎΠΌΠΏΠ΅Π½ΡΠΈΡΡΠ΅Ρ Π½Π΅Ρ Π²Π°ΡΠΊΡ Π² XSLT ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ½ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΉ.
ΠΠ΅ Π²Π΄Π°Π²Π°ΡΡΡ Π² ΡΡΡΠΎΠ³ΠΈΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π΄ΠΈΡΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠΈ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΡΠ΅ΠΊΡΡΡΠΈΡ ΡΡΠΎ Π²ΡΠ΅Π³ΠΎ Π»ΠΈΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΈΠ»ΠΈ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ ΡΠ΅Π±Ρ. ΠΠΎΠΆΠ°Π»ΡΠΉ, ΡΠ°ΠΌΡΠΌ ΠΏΡΠΎΡΡΡΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ ΡΠ΅ΠΊΡΡΡΠΈΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΠΊΡΠΎΡΠΈΠ°Π», ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ:
0!=1
n!=nΓ(n-1)!
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π½Π° ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ½ΠΎΠΌ ΡΠ·ΡΠΊΠ΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΠΊΠΎΠΌ, ΠΊΠ°ΠΊ Java), Π²ΡΡΠΈΡΠ»ΡΡΡΠ°Ρ ΡΠ°ΠΊΡΠΎΡΠΈΠ°Π» ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½Π°:
int factorial(int n) {
if (n == 0) return 1;
else return n * factorial(n-1);
}
ΠΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ Π·Π°ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΊΡΠΎΡΠΈΠ°Π» Π½Π° XSLT. ΠΡ ΡΠΆΠ΅ Π½Π°ΡΡΠΈΠ»ΠΈΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ (Π²Π΅ΡΠ½Π΅Π΅, ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ, ΠΏΠΎΡ ΠΎΠΆΠΈΠ΅ Π½Π° Π½ΠΈΡ ) Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ΄Π½ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΡ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ², Π·Π½Π°ΡΠΈΡ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±Ρ Π²ΡΠ·ΡΠ²Π°Π»Π° ΡΠ°ΠΌΠ° ΡΠ΅Π±Ρ, Π±ΡΠ΄Π΅Ρ Π½Π΅ ΡΠ°ΠΊ ΡΠΆ ΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎ.
ΠΠΈΡΡΠΈΠ½Π³ 11.9. ΠΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ°Π±Π»ΠΎΠ½, Π²ΡΡΠΈΡΠ»ΡΡΡΠΈΠΉ ΡΠ°ΠΊΡΠΎΡΠΈΠ°Π»<xsl:template name="factorial">
<xsl:param name="n"/>
<xsl:choose>
<xsl:when test="$n=0">1</xsl:when>
<xsl:otherwise>
<xsl:variable name="n-1">
<xsl:call-template name="factorial">
<xsl:with-param name="n" select="$n-1"/>
</xsl:call-template>
</xsl:variable>
<xsl:value-of select="$n * number($n-1)"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
ΠΡΠ·Π²Π°Π² ΡΡΠΎΡ ΡΠ°Π±Π»ΠΎΠ½ Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ n ΡΠ°Π²Π½ΡΠΌ 6 ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
<xsl:call-template name="factorial">
<xsl:with-param name="n" select="number(6)"/>
</xsl:call-template>
ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉ ΡΠ·Π΅Π», Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ°Π²Π½ΠΎ "720".
ΠΡΠ΅Π²ΠΈΠ΄Π½ΡΠΌ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΊ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΡΠΌ ΡΡΠ½ΠΊΡΠΈΡΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΡΡ ΠΎΠ΄Π° ΠΈΠ· ΡΠ΅ΠΊΡΡΡΠΈΠΈ. ΠΡΠ»ΠΈ Π±Ρ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΡΠ°ΠΊΡΠΎΡΠΈΠ°Π»Π° Π½Π΅ Π±ΡΠ»ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΎ, ΡΡΠΎ 0!=1, Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΡΠ°ΠΊ Π±Ρ ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π»ΠΈΡΡ Π±Π΅Π· ΠΊΠΎΠ½ΡΠ°.
ΠΠ»Π°Π²Π½ΡΠΌ ΠΌΠΈΠ½ΡΡΠΎΠΌ ΡΠ΅ΠΊΡΡΡΠΈΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ΅Π±ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΊ ΡΠ΅ΡΡΡΡΠ°ΠΌ. ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ°Π±Π»ΠΎΠ½Π°, ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΠ΄Π΅Ρ ΠΊΠ°ΠΊΠΈΠΌ-ΡΠΎ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΡΠΎΡ ΡΠ°Π½ΡΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΠ΅ Π΅ΠΌΡ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ ΠΌΡ ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΡΠΎΡΡΠΈΡΠ°ΡΡ ΡΠ°ΠΊΡΠΎΡΠΈΠ°Π» ΠΎΡ 170, ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΡ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ Π΄Π΅ΡΠΆΠ°ΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ ΡΡΠ°Π·Ρ 170 ΡΠΈΡΠ΅Π». ΠΠ΅Π·ΡΡΠ»ΠΎΠ²Π½ΠΎ, Π² ΡΠ»ΡΡΠ°Π΅ Ρ ΡΠ°ΠΊΡΠΎΡΠΈΠ°Π»ΠΎΠΌ ΡΡΠΎ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ β ΡΠΎΡΠ½ΠΎΡΡΡ 64-Π±ΠΈΡΠ½ΡΡ ΡΠΈΡΠ΅Π» ΠΈΡΡΠ΅ΡΠΏΠ°Π΅ΡΡΡ Π³ΠΎΡΠ°Π·Π΄ΠΎ ΡΠ°Π½ΡΡΠ΅, ΡΠ΅ΠΌ Π·Π°ΠΊΠΎΠ½ΡΠΈΡΡΡ ΠΏΠ°ΠΌΡΡΡ, Π½ΠΎ Π² ΡΠ»ΡΡΠ°Π΅ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π±ΠΎΠ»ΡΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΌΠΎΠ² ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΡΡΠ΅ΠΉ Π΄Π΅ΡΠ΅Π²ΡΠ΅Π²) ΡΠ°ΠΊΠ°Ρ ΡΠ³ΡΠΎΠ·Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, ΡΠ΅ΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΡ, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠ΅ ΡΠ΅ΠΊΡΡΡΠΈΡ.
Π’Π°ΠΊ Π² ΡΠ΅ΠΌ ΠΆΠ΅ ΡΠΌΡΡΠ» ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΠΊΡΡΡΠΈΠΈ? ΠΠ΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ Π²ΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ (ΡΠ²ΡΠ·Π°Π½Π½ΡΡ , Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ Ρ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΌΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ) Π² XSLT ΡΡΡΠ΅ΡΡΠ²ΡΡΡ Π·Π°Π΄Π°ΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ ΠΈΠ½Π°ΡΠ΅ ΠΊΡΠΎΠΌΠ΅ ΠΊΠ°ΠΊ ΡΠ΅ΡΠ΅Π· ΡΠ΅ΠΊΡΡΡΠΈΡ. Π‘Π°ΠΌΡΠΌ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠ½ΡΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ ΡΠ°ΠΊΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ ΡΠ²Π»ΡΡΡΡΡ ΡΠΈΠΊΠ»Ρ.
Π¦ΠΈΠΊΠ»Ρ
Π¦ΠΈΠΊΠ» Π² ΠΎΠ±ΡΠ΅ΠΌ ΡΠΌΡΡΠ»Π΅ ΡΠ»ΠΎΠ²Π° ΡΡΠΎ ΠΏΠΎΠ²ΡΠΎΡΠ΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΈΡ ΠΈ ΡΠ΅Ρ ΠΆΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·. ΠΡΠ»ΠΈ Π³ΠΎΠ²ΠΎΡΠΈΡΡ ΠΎΠ± XSLT, ΡΠΎ ΡΠΈΠΊΠ» ΡΡΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠ°Π±Π»ΠΎΠ½Π°. ΠΠ»Ρ ΠΏΠΎΠ΄Π°Π²Π»ΡΡΡΠ΅Π³ΠΎ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΡΠ»ΡΡΠ°Π΅Π² Π² ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π±ΡΠ²Π°Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΊΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, ΠΊΠ°ΠΊ xsl:apply-templates ΠΈ xsl:for-each, ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°ΡΡΠ°Π²Π»ΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΎΠ΄Π½ΠΈ ΠΈ ΡΠ΅ ΠΆΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π· Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΡΠ·Π»ΠΎΠ² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π°.
ΠΠ΅ΡΠΎΠΌΡΠΌ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠΎΠ΄Π° ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΡΠ·Π»ΠΎΠ². Π ΡΠ΅ΠΊΡΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠΈ ΡΠ·ΡΠΊΠ° Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ ΡΠΈΠΏ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΊΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Ρ ΡΠ·Π»ΠΎΠ², Π·Π½Π°ΡΠΈΡ, Π² Π»ΡΠ±ΠΎΠ΅ ΠΈΠ· Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ Π²Ρ ΠΎΠ΄ΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ ΡΠ·Π»Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ². ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π½ΠΈ xsl:apply-templates, Π½ΠΈ xsl:for-each Π½Π΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Ρ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΡΡΠ΅ while- ΠΈΠ»ΠΈ for-ΡΠΈΠΊΠ»Ρ Π΄Π»Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ².
Π¦ΠΈΠΊΠ» while
ΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΠΎΠΉ ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠ΅ΠΉ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΈΠΊΠ» while (Π°Π½Π³Π». ΠΏΠΎΠΊΠ°). Π¦ΠΈΠΊΠ» while, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΠΈΠΌΠ΅Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π²ΠΈΠ΄:
ΠΏΠΎΠΊΠ°
Π²Π΅ΡΠ½ΠΎ ΡΡΠ»ΠΎΠ²ΠΈΠ΅
Π²ΡΠΏΠΎΠ»Π½ΡΡΡ
Π΄Π΅ΠΉΡΡΠ²ΠΈΡ
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° while-ΡΠΈΠΊΠ»Π° Π½Π°ΠΏΠΈΡΠ΅ΠΌ Π½Π° ΡΠ·ΡΠΊΠ΅ Java ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΡΠ°ΠΊΡΠΎΡΠΈΠ°Π»Π° Π² ΠΈΡΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΌ ΡΡΠΈΠ»Π΅:
int factorial(int n) {
int i = n;
int result = 1;
while (i != 0) {
result = result * i;