描述:
有一个数列a[N] (N=60),从a[0]开始,每一项都是一个数字。数列中a[n+1]都是a[n]的描述。其中a[0]=1。
规则:
a[0] = 1
a[1] = 11
a[2] = 21
a[3] = 1211
...
即a[1] 为a[0] 的描述,1个1;a[2]为a[1]的描述,2个1;a[3]为a[2]的描述,1个2,2个1。
请输出这个数列的第n项结果(a[n],0≤n≤59)。输入描述:
输入:4
输出:111221
本文记录本人的撰写内容,若有不足之处,请指教。
function arrDes(n){
if(n < 0 || n > 59){
console.log('too big');
return
}
if(n==0) return '1'
let str = arrDes(n-1).split('') //前一项的值变为字符串,
let s = ''
let count = 1 //统计出现的数字的频率
let num = '' //当前数字
for(let i=0; i < str.length; i++){ //1
num = str[i]
if(str[i] == str[i+1]){ //前后相同,记录重复次数
count++
}else{ //前后不同,重复次数遍历,变成字符串
s = s + parseFloat(count) + num
count = 1
}
}
console.log(`a[${n}] = ${s}`);
return s
}
arrDes(4)