_Ḟ1+¡
Đây là một giải pháp lặp mà không có sẵn. Nó sử dụng lập chỉ mục giống như thông số kỹ thuật thách thức.
Hãy thử trực tuyến!
Lý lịch
Đặt f là hàm được xác định trong thông số thách thức và F là hàm Fibonacci được xác định như bình thường (nghĩa là với F (0) = 0 ). Đối với số nguyên n không âm , ta có f (n) = F (n + 1) . Khi 0 ≤ x <1 , thông số thử thách xác định f (n + x) là f (n) + (f (n + 1) - f (n)) x .
Rõ ràng, điều này chỉ ảnh hưởng đến các trường hợp cơ sở, nhưng không phải là công thức đệ quy, tức là f (n) = f (n - 1) + f (n - 2) tổ chức vì nó sẽ cho F . Điều này có nghĩa là chúng ta có thể đơn giản hóa định nghĩa cho các đối số không nguyên để dễ dàng hơn f (n) = f (n) + f (n - 1) x .
Như những người khác đã lưu ý trong câu trả lời của họ, mối quan hệ đệ quy cũng giữ cho các đối số không nguyên. Điều này dễ dàng kiểm chứng, như
Vì f (0) = f (1) = 1 , f không đổi trong khoảng [0, 1] và f (0 + x) = 1 với mọi x . Hơn nữa, f (-1) = F (0) = 0 , vì vậy f (-1 + x) = f (-1) + (f (0) - f (-1)) x = 0 + 1x = x . Các trường hợp cơ sở này bao gồm trong [-1, 1) , do đó, cùng với công thức đệ quy, chúng hoàn thành định nghĩa của f .
Làm thế nào nó hoạt động
Như trước đây, hãy để n + x là đối số duy nhất của chương trình đơn âm của chúng tôi.
¡
là một cách nhanh chóng , có nghĩa là nó tiêu thụ một số liên kết bên trái và lần lượt của chúng thành một Quicklink . ¡
đặc biệt tiêu thụ một hoặc hai liên kết.
<F:monad|dyad><N:any>
gọi liên kết N , trả về r và thực hiện F tổng cộng r lần.
<nilad|missing><F:monad|dyad>
đặt r thành đối số dòng lệnh cuối cùng (hoặc đầu vào từ STDIN khi vắng mặt) và thực thi F tổng cộng r lần.
Vì 1
là một nilad (một liên kết không có đối số), trường hợp thứ hai được áp dụng và +¡
sẽ thực thi +
n lần (một đối số không nguyên được làm tròn xuống). Sau mỗi cuộc gọi đến +
, đối số bên trái của quicklink được thay thế bằng giá trị trả về và đối số bên phải bằng giá trị trước đó của đối số bên trái.
Đối với toàn bộ chương trình, Ḟ
tầng đầu vào, mang lại n ; sau đó _
trừ kết quả từ đầu vào, thu được ** x, trở thành giá trị trả về.
1+¡
sau đó gọi +¡
- như được mô tả trước - với đối số bên trái 1 = f (0 + x) và đối số bên phải x = f (-1 + x) , tính toán đầu ra mong muốn.