递归javascript,询问答案

递归javascript,询问答案,javascript,recursion,Javascript,Recursion,有人可以帮助我,解决这个递归问题,我们必须排列字母,如果下一个字母不是序列,它必须是我们的输出 function dataReducer(data) { } console.log(dataReducer('abcdxefgh5wi')); // 'x,5,w' console.log(dataReducer('opqrstu')); // '' console.log(dataReducer('acdefghij')); // 'c,d,e,f,g,h,i,j' console.l

有人可以帮助我,解决这个递归问题,我们必须排列字母,如果下一个字母不是序列,它必须是我们的输出

function dataReducer(data) { 

}

console.log(dataReducer('abcdxefgh5wi')); // 'x,5,w'

console.log(dataReducer('opqrstu')); // ''

console.log(dataReducer('acdefghij')); // 'c,d,e,f,g,h,i,j'

console.log(dataReducer('testu')); // 'e,s,t'

完全救赎自己

所以我喜欢惩罚那些不展示作品的人,但我不是一个可以评判的人。我确实认为,如果你自己尝试这些问题,你会学到更多,但我知道完全困惑的感觉;我们中间没有一个心地善良的人愿意看到你陷入困境

考虑到这一点,我真的认为你可以从这个答案中学到很多东西。如果您感到困惑,请仔细研究并提出后续问题

const ord = c =>
  c.charCodeAt (0)

const isCharSeq = (x, y) =>
  ord (x) + 1 === ord (y)

const dataReducer = ([x, ...xs], last = null, acc = []) =>
  x === undefined
    ? acc.join (',')
  : last === null
    ? dataReducer (xs, x, acc)
  : isCharSeq (last, x)
    ? dataReducer (xs, x, acc)
  : dataReducer (xs, last, acc.concat ([x]))

console.log (dataReducer ('abcdxefgh5wi')) // 'x,5,w'
console.log (dataReducer ('opqrstu'))      // ''
console.log (dataReducer ('acdefghij'))    // 'c,d,e,f,g,h,i,j'
console.log (dataReducer ('testu'))        // 'e,s,t'
console.log (dataReducer ('a'))            // ''
console.log (dataReducer (''))             // ''

dataReducer
是通过适当的尾部调用实现的,这意味着它可以优化,甚至可以处理数百万或数十亿个字符长度的字符串–即使JavaScript虚拟机不支持这种优化,也不要担心。

欢迎使用堆栈溢出!请拿着这本书,通读一遍,特别是做你的研究,看看相关的主题,然后试一试。如果你在做了更多的研究和搜索后陷入困境,无法摆脱困境,请发布一份你的尝试,并明确指出你陷入困境的地方。人们会乐意帮忙的。祝你好运你认为递归的目的何在?@NinaScholz递归不是目的本身吗~_^我以前是如此的灰暗,因为我真的是个新手(因为我在冶金行业的背景),然后我想成为一名程序员,然后我真的很感激,我会从你的回答中学到很多不需要道歉!如果您有更多问题,请随时联系。