一、递归求解
当行数很大时,运行会超时(有测试用例是66,递归求解时超时) let digui=function(n,x){
if(x<=1){
return x
}
if(n<=2){
return 1
}
return digui(n-1,x-2)+digui(n-1,x-1)+digui(n-1,x)
}
let tag=0
for(let i=1;i<=tokens;i++){
let a=digui(tokens,i)
if(a%2==0){
tag=1
console.log(i)
break
}
}
if(tag==0){
console.log(-1)
}
二、找规律
j:表示奇数
o:表示偶数
每行起始数是1,为奇数,第一行也是1
(只看一半,两边对称)
2 | 6 | ||
3 | 7 | ||
4 | 8 | ||
5 | j |
9 | j |
可以看出,从第二行开始,每4行进行奇偶性重复(第二行比较特殊,只有三个值),因此根据行数判断第一个偶数的位置
if(tokens<=2){
console.log(-1)
}else if((tokens-1)%4==1){
console.log(4)
}else if((tokens-1)%4==2){
console.log(2)
}else if((tokens-1)%4==3){
console.log(3)
}else if((tokens-1)%4==0){
console.log(2)
}