2017-12-16 6 views
-6

jemand mir helfen kann, diese Rekursion zu lösen, die Frage, die wir den Brief arrangieren müssen, wenn im nächsten Brief nicht die Folge, muss es unsere Ausgabe seinRekursion Javascript, um Antwort bitten

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' 
+0

Willkommen Überlauf zu Stack! Bitte nimm die [Tour] und lies die [Hilfe], insbesondere [* Wie stelle ich eine gute Frage? *] (/ Help/how-to-ask) Recherchiere, [suche] (/ help/searching)) für verwandte Themen zu SO, und versuchen Sie es. *** Wenn du feststeckst und dich nicht mehr lösen kannst, nachdem du mehr geforscht und gesucht hast, poste einen [mcve] von deinem Versuch und sage genau, wo du feststeckst. Leute werden froh sein zu helfen. Viel Glück! –

+0

Wo sehen Sie einen Zweck für eine Wiederholung? –

+0

@NinaScholz ist Rekursion nicht * die * Zweck selbst? ~ _^^ – naomik

Antwort

0

und total erlöse dich!

SO mag es Leute zu bestrafen, wenn sie ihre Arbeit nicht zeigen, aber ich bin nicht einer zu urteilen. Ich denke, du wirst mehr lernen, wenn du diese Probleme selbst ausprobierst, aber ich weiß, wie es ist, völlig verwirrt zu sein. und keine gutmütige Seele unter uns will sehen, dass du feststeckst.

In diesem Sinne denke ich wirklich, dass Sie viel von dieser Antwort lernen können. Bitte studieren Sie es sorgfältig und stellen Sie Nachfragen, wenn Sie verwirrt sind.

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 mit einem richtigen Endaufruf implementiert ist, was bedeutet, es kann optimiert werden und arbeitet auch auf Strings, die Millionen oder Milliarden von Zeichen lang sind - auch wenn JavaScript VM niemals diese Optimierung unterstützen, keine Sorge, you can DIY.

+0

ich bin so sorey vorher, weil ich wirklich Anfänger (Ursache mein backgorund vorher in der Metallurgie), dann möchte progammer werden, dann bin ich wirklich dankbar, ich werde viel von Ihrer Antwort lernen –

+0

keine Notwendigkeit für Entschuldigungen! Wenn Sie weitere Fragen haben, wenden Sie sich bitte an uns. – naomik