其实不是很复杂你的两个问题关键在于形参上
退出递归就在于pos等于上面r的值3了,return的东西是什么都没有,意思就是void什么都不返回
你可以在函数下面
function combine(pos,h)
{
//这里加一句就知道为什么了
alert("开始的pos="+pos);这样会这样执行
弹出开始的pos等于2
你的对话框弹出2
弹出开始的pos等于3也就说等于3的这步直接return了,没有执行你的alert,而调用的时候是个循环,所以还会接着调用
弹出开始的pos等于3
弹出开始的pos等于2
你的对话框弹出2

解决方案 »

  1.   

    /*请教此处参数pos值得变化-------------------------------当第一次pos等于2的时候,接下来的pos为什么还是2 ,return返回的是什么值*/1.return无值返回,只是结束递归调用,否则就是无限调用了
    2.当第一次pos等于2的时候,接下来的pos为什么还是2,这是由递归调用是执行顺序决定的
      

  2.   

    谢谢大家,还有一个问题,当第一次pos等于 3 的时候 ,接来的pos怎么变为 2 了,这个递归是怎么退出的。
      

  3.   

    这个是在下面的循环中变化的,等于3之后就return掉了,但是原来的for循环还没执行完,接着执行