主题:  请帮忙分析代码

123123456

职务:普通成员
等级:1
金币:0.0
发贴:4
#12004/5/10 17:16:41
y=function(x){
if (x==1){
return 10;
} else {
return arguments.callee(x-1)+3;
}
}
trace9(y(4))

执行上述脚本,得到的结果是19。
请帮忙分析一下,这段脚本是怎样执行的,怎么得到的19。谢谢,本人是一菜鸟,麻烦详细说明。



123123456

职务:普通成员
等级:1
金币:0.0
发贴:4
#22004/5/10 17:28:11
还有个问题,什么是mc啊?谢谢



123123456

职务:普通成员
等级:1
金币:0.0
发贴:4
#32004/5/10 18:02:09
是指movieclip吗



aaee1122

职务:普通成员
等级:1
金币:0.0
发贴:66
#42004/5/12 13:54:21
arguments.callee

可用性

Flash Player 5。

用法

arguments.callee

说明

属性;指当前被调用的函数。

示例

可以使用 arguments.callee 属性来生成递归的匿名函数,如下所示:

factorial = function (x) {
if (x <= 1) {
return 1;
} else {
return x * arguments.callee(x-1);
}
};

下面是一个命名的递归函数:

function factorial (x) {
if (x <= 1) {
return 1;
} else {
return x * factorial(x-1);

}

}

是从帮助里找到的~~
什么意思也不是很清楚。一会儿给你说。



aaee1122

职务:普通成员
等级:1
金币:0.0
发贴:66
#52004/5/12 14:00:15
你那个
trace9(y(4))
错了吧。快查查原来的。



aaee1122

职务:普通成员
等级:1
金币:0.0
发贴:66
#62004/5/12 14:05:31
知道了,
y(4)的时候,
x!=1;
所以返回了y(3)+3;

而y(3)=y(2)+3;
y(2)=y(1)+3;
y(1)=10;
总共就是10+3+3+3=19

谢谢啦,我也学会这个啦。



aaee1122

职务:普通成员
等级:1
金币:0.0
发贴:66
#72004/5/12 14:08:56
你就是说,你那个函数等同于
y=function(x){
if (x==1){
return 10;
} else {
return y(x-1)+3;
}
}
trace (y(4))


不过我想问一下,这个函数有什么用呢,
用回这种形式不是更好,有什么地方有用这个属性的必要呢。
请高手说明一下。