Tôi đã đọc hùng biện JavaScript và tôi đã xem qua ví dụ này cho các câu đố:Một giải thích rõ ràng hơn cho đệ quy và luồng thực thi trong JavaScript?
Hãy xem xét câu đố này: Bằng cách bắt đầu từ số 1 và lặp đi lặp lại hoặc thêm 5 hoặc nhân với 3, một lượng vô hạn của số mới có thể được sản xuất . Làm thế nào bạn sẽ viết một hàm , với một số, cố gắng để tìm một chuỗi các bổ sung và phép nhân tạo ra số đó?
Dưới đây là đoạn code cho các giải pháp:
function findSequence(goal) {
function find(start, history) {
if (start == goal)
return history;
else if (start > goal)
return null;
else
return find(start + 5, "(" + history + " + 5)") ||
find(start * 3, "(" + history + " * 3)");
}
return find(1, "1");
}
print(findSequence(24));
Có thể ai đó làm sáng tỏ cách DOD tìm được thực thi nếu nó không có một giá trị cho các đối số bắt đầu và mục tiêu? Cũng như thế nào sự đệ quy xảy ra?
Xem thêm [Cách đệ quy này hoạt động?] (Http://stackoverflow.com/q/15712230/1048572) và [JavaScript đệ quy từ Eloquent Javascript] (http://stackoverflow.com/q/26205376/1048572) – Bergi