在flash cs6中,这段代码的执行顺序是怎样的?
trace(sum(5));
function sum(n:int):Number
{
if (n>0)
{
trace("n="+n)
trace("sum1="+(n+arguments.callee(n-1)));
return n+arguments.callee(n-1);
}
else
{
return 0;
}
}
在输出面板中,显示的是
n=5
n=4
n=3
n=2
n=1
sum1=1
sum1=3
n=1
sum1=1
sum1=6
n=2
n=1
sum1=1
sum1=3
n=1
sum1=1
sum1=10
n=3
n=2
n=1
sum1=1
sum1=3
n=1
sum1=1
sum1=6
n=2
n=1
sum1=1
sum1=3
n=1
sum1=1
sum1=15
n=4
n=3
n=2
n=1
sum1=1
sum1=3
n=1
sum1=1
sum1=6
n=2
n=1
sum1=1
sum1=3
n=1
sum1=1
sum1=10
n=3
n=2
n=1
sum1=1
sum1=3
n=1
sum1=1
sum1=6
n=2
n=1
sum1=1
sum1=3
n=1
sum1=1
15
trace(sum(5));
function sum(n:int):Number
{
if (n>0)
{
trace("n="+n)
trace("sum1="+(n+arguments.callee(n-1)));
return n+arguments.callee(n-1);
}
else
{
return 0;
}
}
在输出面板中,显示的是
n=5
n=4
n=3
n=2
n=1
sum1=1
sum1=3
n=1
sum1=1
sum1=6
n=2
n=1
sum1=1
sum1=3
n=1
sum1=1
sum1=10
n=3
n=2
n=1
sum1=1
sum1=3
n=1
sum1=1
sum1=6
n=2
n=1
sum1=1
sum1=3
n=1
sum1=1
sum1=15
n=4
n=3
n=2
n=1
sum1=1
sum1=3
n=1
sum1=1
sum1=6
n=2
n=1
sum1=1
sum1=3
n=1
sum1=1
sum1=10
n=3
n=2
n=1
sum1=1
sum1=3
n=1
sum1=1
sum1=6
n=2
n=1
sum1=1
sum1=3
n=1
sum1=1
15