factorial(3): a!=1, 执行 a*=factorial(2) -> 调用factorial(2): a!=1(这个a与刚才的不是同一个,它们是不同函数里的), 执行 a*=factorial(1) -> 调用factorial(1): a==1, 返回1给调用它的factorial(2)函数,factorial(1)函数结束 -> 回到factorial(2): a的值已经算完(=2),执行下一句:返回a的值即2给调用它的函数factorial(3), factorial(2)函数结束 -> 回到factorial(3): a的值已经算完(=6),执行下一句:返回a的值即6。.
执行结果为factorial(3)=6。
递归就是不停地调用自身。这里要注意即使是同一个函数,他被多次调用时参数名虽然一样但并不是完全等同的
这是最完整的答案,完美的说明了 return 1; 和return a;
和为何循环的原因。
[
本帖最后由 编译中。。 于 2011-8-2 18:58 编辑 ]