各位高手:请帮小弟解答一下下面的js代码,这段代码是计算n个数的平方和的递归函数,并返回每一次的递归值:
<html>
<head>
<title></title>
<script language="javascript">
<!--
function sumn(n)
{
  document.write("<b>进入下层递归--n的当前值为:"+n+"</b><br>");
  if(n==1)
    {
       return 1;
    }
  else
    {
       (n*n+sumn(n-1));
    }
   document.write("<b>进入上层递归--n的当前值为:"+n+"</b><br>");
}
//-->
</script>
</head>
<body bgcolor="lightblue">
<script language="javascript">
<!--
var userinput = eval(prompt("请输入n的值(1-10):",""));
sumn(userinput);
//-->
</script>
</body>
</html>
代码的执行结果为:
进入下层递归--n的当前值为:5
进入下层递归--n的当前值为:4
进入下层递归--n的当前值为:3
进入下层递归--n的当前值为:2
进入下层递归--n的当前值为:1
进入上层递归--n的当前值为:2
进入上层递归--n的当前值为:3
进入上层递归--n的当前值为:4
进入上层递归--n的当前值为:5
前面的进入下层递归的值小弟还明白,但是上层递归的值是怎么算出来的小弟就不明白了,也就是这一句:document.write("<b>进入上层递归--n的当前值为:"+n+"</b><br>");小弟是初学者,还望各位高手多多指教,小弟感激不尽!

解决方案 »

  1.   

    正来说,JS是由上而下逐行执行的。当你输入一个数,比如说5时;执行sumn(5);在执行sumn(5)时,由于n不等于1,所以执行else内的sumn(4);只有sumn(4)执行完了,才会执行最后一句document.write(" <b>进入上层递归--n的当前值为:"+n+" </b> <br>"); 此时n等5;而在执行sumn(4)的时候,又会重复上会的三步;
    当n等于1时,就只执行第一个document.write;
      

  2.   

    很简单啊,当下层递归到n=1时,返回到上层递归,此时N=2,
    然后执行这句:document.write(" <b>进入上层递归--n的当前值为:"+n+" </b> <br>"); 
    自然输出n就是2了
    以此类推,执行完n=2这次的递归之后,再返回到上层递归,n=3了就
    ......
    最后n=5