この記事に関して質問があります。
このコードの間
function odds(n, p) {
if(n == 0) {
return 1
} else {
return (n / p) * odds(n - 1, p - 1)
}
}
そしてこのコード
(function(){
var odds1 = function(n, p, acc) {
if(n == 0) {
return acc
} else {
return odds1(n - 1, p - 1, (n / p) * acc)
}
}
odds = function(n, p) {
return odds1(n, p, 1)
}
})()
1) これがどれだけ役立つか、私は混乱しています。2 番目のスニペットには、自分自身を再度呼び出す前に必要なものを計算するため、オーバーヘッドが少ないテール コールが含まれているだけですか?
私が理解しているように、テールコールはまだ排除されておらず、最適化されているだけです。
odds
2) そして、odds1
とにかく存在する必要があるのはなぜですか? それは私にもまだはっきりしていません。