JavaScript bağlamında Tail call optimization
'u anlamaya çalışıyorum ve factorial()
için aşağıda belirtilen özyinelemeli ve özyinelemeli yöntemleri yazdık.JavaScript kuyruğundaki işlevler optimize edildi mi?
Recursive:
function factorial (n) {
if (n < 2) {
return 1;
} else {
return n * factorial(n-1);
}
}
Kuyruk-özyinelemeli:
function factorial (n) {
function fact(n, acc) {
if (n < 2) {
return acc;
} else {
return fact(n-1, n * acc);
}
}
return fact(n, 1)
}
Ama yapıldığı gibi fonksiyon tail-recursive
sürümü JavaScript derleyicisi tarafından optimize edilecek olup olmadığından emin değilim Scala vb. gibi diğer dillerde. Birisi bana yardım edebilir mi?
Hat 2 Kuyruk-özyinelemeli snippet'te 'işlev aslında olması gerekir (n, acc)' sırayla çalışmak. Snippet için teşekkürler, bugün bunu anlamaya çalışıyordum! –