XSLT递归和变量

问题描述 投票:0回答:1
<xsl:template name="factorial">
  <xsl:param name="number" select="1"/>
  <xsl:choose>
    <xsl:when test="$number &lt; 1">
      <xsl:value-of select="1"/>
    </xsl:when>
    <xsl:otherwise>
      <xsl:variable name="recursive_result">
        <xsl:call-template name="factorial">
          <xsl:with-param name="number" select="$number - 1"/>
        </xsl:call-template>
       </xsl:variable>
      <xsl:value-of select="$number * $recursive_result"/>
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>

I saw this recursion template in XSLT and cannot understand what is happening

亲爱的Lingamurthy,

我阅读了您在本页上写的内容,发现很难理解变量的递归。因此,例如,如果首先调用模板阶乘,则值为3,则达到,并且阶乘模板中的变量再次调用阶乘模板,但这一次的值为2。 1,然后使用0。以0作为值进行调用时,将输入,并为该递归调用实例生成输出1。然后控件返回到从中调用模板的位置(阶乘调用的前一个实例)。因此,称为下一个指令。

由于最后一次调用中$ number和$ recursive_result已减小为1,处理器如何乘法,即1 * 1 * 2?他如何获取值?

您能帮我吗?

Rodolphe

xml variables recursion xslt factorial
1个回答
0
投票
factorial(3): number = 3, recursive_result = factorial(2), result = number * recursive_result factorial(2): number = 2, recursive_result = 1, result = 2 * 1
© www.soinside.com 2019 - 2024. All rights reserved.