一、递归求解

当行数很大时,运行会超时(有测试用例是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 j j j 6 j j j o
3 j o j o 7 j o j o
4 j j o j 8 j j o j
5 j o o o 9 j o o o

可以看出,从第二行开始,每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)
    }