return num * num + test(num-1);
为什么return后面还有加上num * num;
好像没有什么意义?
但在教程里是这样写的!

我把num * num + 删掉也一样正常执行. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <title> New Document </title>
  <meta name="Generator" content="EditPlus">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">  <script type="text/javascript"> function test(num){
document.write("<strong>输出的数字是:</strong>" + num + "<br />");
if(num ==1){
return 1;
}
else{
return num * num + test(num-1);
}
}</script>
 </head> <body>
<script type="text/javascript">
var num = prompt("请输入1-10之间的数字:","");
test(num);
</script>
 </body>
</html>

解决方案 »

  1.   

    你递归调用一个方法终归要有个目的吧
    return num * num + test(num-1) 计算1——num的平方和
      

  2.   

    1楼解释得很清楚,lz 自己看看输出结果自然就明白了L@_@K
    function test(num){
        document.write("<strong>输出的数字是:</strong>" + num + "<br />");
        if(num ==1){
            return 1;
        }
        else{
            return num * num + test(num-1);
        }
    }
    var result = test(5);
    document.write(result); // 55把num * num + 删掉也一样正常执行.
    ——确实没错,但是当输入为正整数时输出结果始终为 1。另,输入非正整数时即为死循环!
      

  3.   

    return num * num + test(num-1) 一般的调用不会直接写调用本身,会写(num-1)或者(num+1)
      

  4.   

    把代码改成这样你就懂了,你那个程序,你看到的只是return num*num+test(num-1);这句中的test(num-1)的执行结果,这个函数的作用就如一楼所说,求1到num的平方和。<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
     <head>
      <title> New Document </title>
      <meta name="Generator" content="EditPlus">
      <meta name="Author" content="">
      <meta name="Keywords" content="">
      <meta name="Description" content="">  <script type="text/javascript">    function test(num){
            document.write("<strong>输出的数字是:</strong>" + num + "<br />");
            if(num ==1){
                return 1;
            }
            else{
               
                return num*num+test(num-1);
            }
        }</script>
     </head> <body>
            <script type="text/javascript">
                    var num = prompt("请输入1-10之间的数字:","");
                   document.write("1到"+num+"的平方和是:"test(num));
            </script> </body>
    </html>