bir ay önce bazı Google PTO üyeleri tarafından röportaj yaptım. sorulardan biri oldu: js içinde yinelemeli bir dize ters çevirin ve bu benim çözüm olduBir dizgeyi ters çevirin: javascript'te yineleme vs yineleme
büyük Ç gösterimde tarafından çalışma süresini açıklamak:
function invert(s){
return (s.length > 1) ? s.charAt(s.length-1)+invert(s.substring(0,s.length-1)) : s;
}
Oldukça basit, sanırım.
Ve büyük notasyonla ilgili olarak, hızlı bir şekilde O (n) 'yi çalışma süresi lineer olarak girişe bağlı olarak yanıtladım. - Sessizlik - ve sonra, bana sordu, eğer iterasyon ile uygularsanız, çalışma süresi açısından farklılıklar nelerdir?
Bazen derleyicinin yinelemeyi yinelemeye "çevirir" (bazı programlama dili kursu anıları), bu durumda yineleme ve özyineleme konusunda hiçbir farklılık olmadığını söylerim. Btw bu özel soruyla ilgili hiçbir geri bildirim almadığımdan ve görüşmeci “tamam” ya da “hayır” diye cevap vermediyse, belki benimle aynı fikirde olup olmadığınızı bilmek isterim ya da bana farklılıklar olup olmadığını bana açıklayabilirseniz 2 tür uygulama.
Çok teşekkürler ve Saygılar!
ama, bu bir olmaz özyinelemede çağrı yığını nesil havai olabilir bir döngü. –
Btw, 3 kez erişmek yerine s.length depolamış olabilirdim, ama belki de optimizasyona gerek yoktu ... (Üzgünüm, her zaman erken bir şekilde optimize ederim, bu benim birçok hatamdan biridir) –
@Martin: çağrı yığını üretimi bir * çok * minik havai olmak. Her halükarda, buradaki kod, n kere yinelenir, n kere yinelenen bir döngü olarak aynı hesaplama karmaşıklığına sahiptir. – Juliet