助教讲的方法,看的我都没有勇气听下去,然后看题解,发现有个比较好理解的,思路如下
这个看起来还是很好理解的,按照思路码了一遍
var kthGrammar = function(n, k) {
//
if (n === 1) return 0;
// 计算当前行的长度
const length = 2**(n-1);
// 判断k是在当前行的前半段还是后半段
if(k > length/2){
// 后半段 取上一行相同位置的 相反数
return kthGrammar(n-1, k - length/2) === 0 ? 1 : 0;
} else {
return kthGrammar(n-1, k);
}
};