帮我解释下这段JS代码的意思,谢谢
varr=[];varlt=0;varrt=0;vara=function(n){if(1==n){obj=m(lt,rt);rt=obj.r2;lt=obj.r1;}e...
var r=[];var lt=0;var rt=0;
var a=function(n)
{
if(1==n)
{obj=m(lt,rt);rt=obj.r2;lt=obj.r1;}
else
{obj=m(rt,lt);rt=obj.r1;lt=obj.r2;}
}
function m(n1,n2)
{
if(n1)
{r.push(n1);n1=0;}n2++;
if(5==r.length && n2>7)
{r.push(n2);if(c())g();return;}
return {"r1":n1,"r2":n2};}
function c()
{for(var i=1;i<4;i++){if((r[i]+r[i+1])!=r[i+2])return 0;}return 1;}
谢谢
似乎和斐波那契数列有关系
JS我实在是不懂.这是从一个网站的一个JS文件里提取出来的片段.它应该是判断一系列点击,还似乎和非波拉切数列有关系.
很重要.我需要知道它是怎么判断这一系列点击,这个数列会是什么.
所以才给200多积分.
所以试试给我解释一下吧,再基本的也好.反正我什么都不懂.对我来说什么都不基本.谢谢了! 展开
var a=function(n)
{
if(1==n)
{obj=m(lt,rt);rt=obj.r2;lt=obj.r1;}
else
{obj=m(rt,lt);rt=obj.r1;lt=obj.r2;}
}
function m(n1,n2)
{
if(n1)
{r.push(n1);n1=0;}n2++;
if(5==r.length && n2>7)
{r.push(n2);if(c())g();return;}
return {"r1":n1,"r2":n2};}
function c()
{for(var i=1;i<4;i++){if((r[i]+r[i+1])!=r[i+2])return 0;}return 1;}
谢谢
似乎和斐波那契数列有关系
JS我实在是不懂.这是从一个网站的一个JS文件里提取出来的片段.它应该是判断一系列点击,还似乎和非波拉切数列有关系.
很重要.我需要知道它是怎么判断这一系列点击,这个数列会是什么.
所以才给200多积分.
所以试试给我解释一下吧,再基本的也好.反正我什么都不懂.对我来说什么都不基本.谢谢了! 展开
2个回答
展开全部
首先你的这段代码不全.无法知道代码完整功能
//定义四个变量,r为数组,lt=0,rt=0
var r=[];var lt=0;var rt=0;
//定义一个函数变量a,有一个参数n,以后可以使用a(1),a(3)之类的调用
var a=function(n){
//如果参数n的值为1的话
if(1==n){
//以全局变量lt,rt为参数调用
obj=m(lt,rt);
//将返回对象的r2字段赋值给全局变量rt的
rt=obj.r2;
//将返回对象的r1字段赋值给全局变量lt的
lt=obj.r1;
}else{//n不为1时
//调用与上面相似..
obj=m(rt,lt);
rt=obj.r1;
lt=obj.r2;
}
}
function m(n1,n2){
//如果n1不为0
if(n1){
//将n1的值放到数组r的最后面
r.push(n1);
//将n1置0
n1=0;
}
//n2的值加1
n2++;
//如果数组r的长度为5并且n2的值大于7,将返回空对象
if(5==r.length && n2>7){
//将n2放入数组
r.push(n2);
//如果调用c函数返回值为真,调用g()
//********g()函数不明*******
if(c())g();
//返回空对象
return;
}
//返回用大括号创建Javascript对象,有两个字段r1,r2,值分别为n1,n2
return {"r1":n1,"r2":n2};
}
function c(){
//遍历数组r的部分,i的值为1,2,3,可能用到r数组的第2个数到第6个数
for(var i=1;i<4;i++){
//如果r数组中的第i+2个值不是前面两个值的和,返回0
if((r[i]+r[i+1])!=r[i+2])return 0;
}
//如果从第4个数到第6个数都是它前面两个数的和,返回1
return 1;
}
要是回答的内容有问题,或认为不妥,请发送百度消息给我,消息内容加上本页网址哦。。
·
//定义四个变量,r为数组,lt=0,rt=0
var r=[];var lt=0;var rt=0;
//定义一个函数变量a,有一个参数n,以后可以使用a(1),a(3)之类的调用
var a=function(n){
//如果参数n的值为1的话
if(1==n){
//以全局变量lt,rt为参数调用
obj=m(lt,rt);
//将返回对象的r2字段赋值给全局变量rt的
rt=obj.r2;
//将返回对象的r1字段赋值给全局变量lt的
lt=obj.r1;
}else{//n不为1时
//调用与上面相似..
obj=m(rt,lt);
rt=obj.r1;
lt=obj.r2;
}
}
function m(n1,n2){
//如果n1不为0
if(n1){
//将n1的值放到数组r的最后面
r.push(n1);
//将n1置0
n1=0;
}
//n2的值加1
n2++;
//如果数组r的长度为5并且n2的值大于7,将返回空对象
if(5==r.length && n2>7){
//将n2放入数组
r.push(n2);
//如果调用c函数返回值为真,调用g()
//********g()函数不明*******
if(c())g();
//返回空对象
return;
}
//返回用大括号创建Javascript对象,有两个字段r1,r2,值分别为n1,n2
return {"r1":n1,"r2":n2};
}
function c(){
//遍历数组r的部分,i的值为1,2,3,可能用到r数组的第2个数到第6个数
for(var i=1;i<4;i++){
//如果r数组中的第i+2个值不是前面两个值的和,返回0
if((r[i]+r[i+1])!=r[i+2])return 0;
}
//如果从第4个数到第6个数都是它前面两个数的和,返回1
return 1;
}
要是回答的内容有问题,或认为不妥,请发送百度消息给我,消息内容加上本页网址哦。。
·
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询