【问题标题】:recursion javascript, ask for answer递归javascript,求答案
【发布时间】:2018-05-30 11:09:19
【问题描述】:

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

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'

【问题讨论】:

  • 欢迎来到 Stack Overflow!请使用tour 并通读help center,尤其是How do I ask a good question? 做你的研究,search 以获取有关 SO 的相关主题,然后试一试。 如果您在进行更多研究和搜索后遇到困难并且无法摆脱困境,请发布您的尝试minimal reproducible example,并具体说明您遇到的问题。人们会很乐意提供帮助。祝你好运!
  • 您认为撤销的目的在哪里?
  • @NinaScholz 是递归而不是 目的本身吗? ~_^

标签: javascript recursion


【解决方案1】:

彻底救赎自己!

SO 喜欢惩罚不展示自己作品的人,但我不适合评判。我确实认为,如果您自己尝试这些问题,您会学到更多,但我知道完全不知所措是什么感觉;我们中间没有一个好心人愿意看到你被卡住。

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

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 VM 不支持这种优化,请不要担心,@987654321 @。

【讨论】:

  • 我以前很糟糕,因为我真的是新手(因为我以前在冶金方面有过背景),然后想成为一名职业选手,然后我真的很庆幸,我会从你的回答中学到很多东西
  • 无需道歉!如果您还有其他问题,请随时与我们联系。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-24
  • 1970-01-01
  • 2021-07-20
  • 2016-08-17
  • 1970-01-01
  • 2015-12-29
  • 1970-01-01
相关资源
最近更新 更多