рдлрд╛рдЗрдмреЛрдиреИрдЪрд┐ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреА рдЧрдгрдирд╛ рдПрдХ рдХреНрд▓рд╛рд╕рд┐рдХ рдПрд▓реНрдЧреЛрд░рд┐рджрдорд┐рдХ рдХрд╛рд░реНрдп рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдХреНрд╕рд░ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдореЗрдВ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рд╡реЗ рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЙрдореНрдореАрджрд╡рд╛рд░, рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдХрдо рд╕реЗ рдХрдо рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред рдорд╛рди рд▓реАрдЬрд┐рдП рдЖрдк рдПрдХ рд╣реА рдЙрдореНрдореАрджрд╡рд╛рд░ рд╣реИрдВред рдЖрдкрдХреЛ рдпрд╣ рдХрд╛рд░реНрдп рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛: рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ, рдПрдХ рдлрд╝рдВрдХреНрд╢рди
fib(n)
рд▓рд┐рдЦреЗрдВ рдЬреЛ nth рдлрд╛рдЗрдмреЛрдиреИрдЪрд┐ рд╕рдВрдЦреНрдпрд╛ рджреЗрддрд╛ рд╣реИред рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╢реВрдиреНрдп рдлрд╛рдЗрдмреЛрдиреИрдЪрд┐ рд╕рдВрдЦреНрдпрд╛ рд╢реВрдиреНрдп рд╣реИред рддрд░реНрдХ рдХреА рд╡реИрдзрддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреНрдпрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ?

1. рдЖрд╕рд╛рди рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рд▓реЛрдЧ рдЖрдкрдХреЗ рд▓рд┐рдП рдкрд╣реБрдВрдЪреЗрдВрдЧреЗред
рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЙрдкрд╛рдп рдПрдХ рднреЛрдЬ рдЪрдХреНрд░ рд╣реИред
const fib = n => { let prev = 0, next = 1; while(n-- && (next = prev + (prev = next))); return prev; }
рдПрдХ рдЪреБрдЯрдХреБрд▓рд╛ред рдмреЗрд╢рдХ, рдЖрдкрдХреЛ рдРрд╕рд╛ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - рдЬрдм рддрдХ рдХрд┐ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЖрдкрдХреЛ рдкреВрд░реНрдгрдХрд╛рд▓рд┐рдХ рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдирд╣реАрдВ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
const fib = n => { let prev = 0, next = 1; for(let i = 0; i < n; i++){ next = prev + next; prev = next - prev; } return prev; }
рдХреНрдпрд╛ рдЖрдк рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рдХреВрдкрди рд╕реЗ рдмрд╛рд╣рд░ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВ? cypok
рдареАрдХ рд╣реИ, рдареАрдХ рд╣реИ, рдФрд░ рднреА рдЕрдзрд┐рдХ рдкрдардиреАрдпрддрд╛ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдЗрд╕реЗ рд▓рд┐рдЦреЗрдВ:
const fib = n => { let prev = 0, next = 1; for(let i = 0; i < n; i++){ let temp = next; next = prev + next; prev = temp; } return prev; }
рдпрд╣ рдПрдХ рдХреНрд▓рд╛рд╕рд┐рдХ, рд╕рд░рд▓ рдФрд░ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рд╡рд┐рдХрд▓реНрдк рд╣реИред рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдЖрдк рдХреБрдЫ рдЕрдиреНрдп рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЗ рдЕрдкрдиреЗ рдЬреНрдЮрд╛рди рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП ...
2. рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЛ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рд┐рдП
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рд╛рдБ, рдЖрдк рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣:
const fib = n => { if(n <= 1){ return n; }else{ return fib(n - 1) + fib(n - 2); } }
рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЛ рдпрд╛рдж рд░рдЦреЗрдВред рдпрд╣ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИред рдпрд╣ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдЕрд╕рдВрднрд╡ рд╣реИред
рдХрднреА рдирд╣реАрдВред рдпрд╣ рдкрд┐рд▓реНрд▓реЛрдВ рдХреЛ рдорд╛рд░рдиреЗ рд╕реЗ рднреА рдмрджрддрд░ рд╣реИ, рдФрд░ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдкреНрд░рд▓рдп рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИредрдЖрдк рдкреВрдЫ рд╕рдХрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдмрд╕ рдЗрд╕ рдХреЛрдб рдХреЛ рдЪрд▓рд╛рдПрдВ рдФрд░ рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ, рдХрд╣рддреЗ рд╣реИрдВ, рдкрдЪрд╛рд╕рд╡реАрдВ рдлрд╛рдЗрдмреЛрдиреИрдЪрд┐ рд╕рдВрдЦреНрдпрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рджреЗрд░реА рдорд╣рд╕реВрд╕ рдХрд░реЗрдВрдЧреЗред рдПрдХ рдЪреБрдЯрдХреБрд▓рд╛ред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рдЗрд╕ рдХреЛрдб рдХреЛ рд╕реБрдкрд░ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдирд╣реАрдВ рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдмрд╕ рдкрд░рд┐рдгрд╛рдо рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рд╕реЗ рд╕рд░рд▓, рдЧреИрд░-рдкреБрдирд░рд╛рд╡рд░реНрддреА рдХреЛрдб, рдлрд┐рдмреЛрдирд╛рдЪреА рдЕрдиреБрдХреНрд░рдо рдХреЗ рдкрдЪрд╛рд╕рд╡реЗрдВ рд╕рджрд╕реНрдп рдХреЛ рддреЗрдЬреА рд╕реЗ рдЧрд┐рдирд╛ рдЬрд╛рдПрдЧрд╛, рдЬрдмрдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╢рдмреНрдж "рдкрдЪрд╛рд╕" рдпрд╛ рдХрд┐рд╕реА рд╢рдмреНрджрд╛рдВрд╢ рдХреЛ рдХрд╣рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред
O- рд╕рдВрдХреЗрддрди рдХреА рдЦреБрд░рджрд░реА рднрд╛рд╖рд╛ рдореЗрдВ рд╡реНрдпрдХреНрдд, рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдорд╛рдзрд╛рди рдореЗрдВ O (e
n ) рдХреА рд╕рдордп рдЬрдЯрд┐рд▓рддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдмрдврд╝рддрд╛ рдПрди рдХреЗ рд╕рд╛рде рддреЗрдЬреА рд╕реЗ рдмрдврд╝рддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рдЬрдм n рд╕реЗ рдмрдврд╝рддрд╛
рд╣реИ , рддреЛ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдмрдврд╝рддрд╛ рд╣реИред рдореЛрдЯреЗ рддреМрд░ рдкрд░, рдЕрдЧрд░
fib(45)
рдЖрдкрдХреЛ рдПрдХ рдШрдВрдЯрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рдерд╛, рддреЛ
fib(46)
рдЖрдк рджреЛ рдШрдВрдЯреЗ,
fib(47)
- 4 рдШрдВрдЯреЗ рдФрд░ рдЗрд╕реА рддрд░рд╣ рдЗрдВрддрдЬрд╛рд░ рдХрд░реЗрдВрдЧреЗред рдореИрдВрдиреЗ рдЗрддрдиреЗ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЪрдмрд╛рдпрд╛ рдХрд┐ рд╣рд░ рдкрд╛рдардХ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рдЯрд╛рдЗрдкрд╕реЗрдЯрд░ рдЬрд┐рд╕рдиреЗ рдкрд╣рд▓реА рдмрд╛рд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдЕрдкрдирд╛ рд╣рд╛рде рдЖрдЬрдорд╛рдпрд╛, рд╡рд╣ рд╕реНрдерд┐рддрд┐ рдХреА рднрдпрд╛рд╡рд╣рддрд╛ рдХрд╛ рдПрд╣рд╕рд╛рд╕ рдХрд░ рд╕рдХрд╛ред
рдпрд╣ рд╕рд╣реА рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рдЕрд╢рд┐рд╖реНрдЯ рд╣реИред рдЖрдк рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рдЕрдиреБрдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ~ (1 + sqrt (5)) рдлрд╝рд╛рдЗрдмрд░ (n) рдФрд░ рд╕реБрдВрджрд░ рдЯрд┐рдкреНрдкрдгреА "рднреЛрд▓реА рдкреБрдирд░рд╛рд╡рд░реНрддреА рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╛рдЗрдмреЛрдиреИрдЪрд┐ рд╕рдВрдЦреНрдпрд╛ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдлрд╝рд┐рдмреЛрдиреИрдЪрд┐ рд╕рдВрдЦреНрдпрд╛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 3.2 рдЧреБрдирд╛ рдЕрдзрд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред" Taus
рдФрд░ рдЗрд╕рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдПрдХ рдФрд░ рд╡рд┐рдзрд┐ рдорд┐рд▓рддреА рд╣реИред рдЖрдкрдХреЛ рдмрд╕ рднреЛрд▓реА рдкреБрдирд░рд╛рд╡рд░реНрддреА рд╡рд┐рдзрд┐ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ, рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВ рдФрд░ 3.2 рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдВ! Cerberuser
рдпрджрд┐ рдЖрдкрдХреЛ рдПрдХ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдХреЗ рджреМрд░рд╛рди рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдкреБрди: рд╕рдорд╛рдзрд╛рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рд░реИрдЦрд┐рдХ рд╕рдордп рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реА "рд╕рд╣реА" рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд▓рдЧ рд╕рдХрддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣:
const fib2 = n => { if(n == 0){ return [0, 1]; }else{ const [prev, next] = fib2(n - 1); return [next, prev + next]; } } const fib = n => fib2(n)[0];
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ: рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдлрд╛рдЗрдмреЛрдиреИрдЪрд┐ рд╕рдВрдЦреНрдпрд╛рдПрдВ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд╛ рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ, рдкрд╛рдареНрдпрдкреБрд╕реНрддрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдорд╛рдорд▓рд╛ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдЖрдк рдХреБрдЫ рдФрд░ рдЬреНрдЮрд╛рди рджрд┐рдЦрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
3. рд╕реНрдорд╛рд░рдХ рд╕рдорд╛рд░реЛрд╣
рдПрдХ рдЬрд╛рджреБрдИ рддрд░реАрдХрд╛ рд╣реИ рдЬреЛ рдЕрдВрддрд┐рдо рдкреИрд░рд╛рдЧреНрд░рд╛рдл рд╕реЗ рдПрдХ рд░рд╛рдХреНрд╖рд╕реА рдЕрдкреНрд░рднрд╛рд╡реА рд╕рдорд╛рдзрд╛рди рдХреЛ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдмрд╣реБрдд рдЬрд▓реНрджреА (рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ рдирд╣реАрдВ) рдореЗрдВ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред рдЙрд╕рдХрд╛ рдирд╛рдо рд╕рдВрд╕реНрдорд░рдг рд╣реИред рдФрд░ рдЕрдЧрд░ рдЖрдк рд░реВрд╕реА рдмреЛрд▓рддреЗ рд╣реИрдВ - рд╣рдо рдЙрдиреНрд╣реЗрдВ рдлрд┐рд░ рд╕реЗ рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдкрд┐рдЫрд▓реЗ рдХреЙрд▓ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВред
рдореВрд▓ рд░реВрдк рд╕реЗ, рд╣рдо рдЙрд╕ рд╕рдорд╛рдзрд╛рди рдХреЗ рдЕрдВрджрд░ рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ - рдмрд╕ рдПрдХ
memoize
рдЖрд╡рд░рдг рдлрд╝рдВрдХреНрд╢рди рдЬреЛрдбрд╝реЗрдВред рдпрд╣рд╛рдБ, рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдПрдХ рдПрдХрд▓ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреЗ рд╕рд░рд▓реАрдХреГрдд рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред
рджреЗрдЦрд╛! рдЕрдм
fib
рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ
cache
рдСрдмреНрдЬреЗрдХреНрдЯ рддрдХ рдкрд╣реБрдВрдЪ рд╣реИред рдпрджрд┐ рдпрд╣ рдПрдХ рдРрд╕реЗ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдкрд╣рд▓реЗ рд╕рд╛рдордирд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдкрд░рд┐рдХрд▓рд┐рдд рдорд╛рди
cache
рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддрд╛ рд╣реИред рдПрдХ рд╣реА рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдирдП рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЗ рд╕рд╛рде, рдореВрд▓реНрдп рдХреЛ рдкреБрдирд░реНрдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдмрд╕ рдХреИрд╢ рд╕реЗ рд▓рд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред "рдЦрд░рд╛рдм" рдкреБрд░рд╛рдиреЗ
fib
рдлрд╝рдВрдХреНрд╢рди рдХреА рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рдпрд╣ рдереА рдХрд┐ рдЗрд╕рдореЗрдВ рд╕рдорд╛рди рдореВрд▓реНрдп рдХрдИ рдмрд╛рд░ рдкреБрдирд░реНрдЧрдгрд┐рдд рдХрд┐рдП рдЧрдП рдереЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
fib(45)
рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╛рд░
f(44)
, рджреЛ рдмрд╛рд░
f(43)
, рддреАрди рдмрд╛рд░
f(42)
, рдкрд╛рдВрдЪ рдмрд╛рд░
f(41)
, рдФрд░ рдЗрд╕реА рддрд░рд╣ рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ред
рдордиреЛрд░рдВрдЬрдХ рддрдереНрдпрднреЛрд▓реА рдкреБрдирд░рд╛рд╡рд░реНрддрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдкрд┐рдЫрд▓реА рдлрд╛рдЗрдмреЛрдиреИрдЪрд┐ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рдЧрдгрдирд╛ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реНрд╡рдпрдВ рдлрд╛рдЗрдмреЛрдиреИрдЪрд┐ рд╕рдВрдЦреНрдпрд╛ рд╣реЛрддреА рд╣реИред рдХреНрдпрд╛ рдпрд╣ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рдирд╣реАрдВ рд╣реИ? рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВред рдлрд╛рдЗрдмреЛрдиреИрдЪрд┐ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд╕рд╛рде, рдпрд╣ рд╣рдореЗрд╢рд╛ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ, рдкреЛрд╕реНрдЯ рдХреЗ рдЕрдВрдд рдореЗрдВ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдЙрджрд╛рд╣рд░рдг рд╣реЛрдЧрд╛ред
рддреЛ, рдЕрдм рдкрд┐рдЫрд▓реЗ рдорд╛рдиреЛрдВ рдХреА рдЧрдгрдирд╛ рдПрдХ рдмрд╛рд░ рдХреА рдЬрд╛рдПрдЧреА, рдФрд░ рдЬрдм рд╡реЗ рдлрд┐рд░ рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ - рдмрд╕ рдХреИрд╢ рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк рдХрд▓реНрдкрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЪрд╛рд▓реАрд╕-рдкрд╛рдВрдЪрд╡реЗрдВ рдлрд╛рдЗрдмреЛрдиреИрдЪрд┐ рд╕рдВрдЦреНрдпрд╛ рдХреА рдЧрдгрдирд╛ рд╣рдо рдХрд┐рддрдиреА рддреЗрдЬреА рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдЧрдВрднреАрд░рддрд╛ рд╕реЗ, рдЖрдкрдХреЛ рдХреНрдпрд╛ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ?
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ - рдереЛрдбрд╝рд╛ рдзреАрдорд╛ред рдореИрдВрдиреЗ рдЬрд╛рдирдмреВрдЭрдХрд░ рдПрдХ рдХреНрд▓рд╛рд╕рд┐рдХ рдЧрд▓рддреА рдХреА, рдЕрдХреНрд╕рд░ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдпрд╛рдж рдХрд░рддреЗ рд╕рдордп рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЬрдм
fib(45)
"рд╣реБрдб рдХреЗ рдиреАрдЪреЗ" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ
oldFib(45)
рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЕрдкрдиреА рдЬрд░реВрд░рддреЛрдВ рдХреЗ рд▓рд┐рдП
oldFib(44)
рдФрд░
oldFib(43)
рдХреЛ
oldFib(43)
... рдХреНрдпрд╛ рдЖрдкрдХреЛ рдХреИрдЪ рдХрд╛ рдЕрд╣рд╕рд╛рд╕ рд╣реИ? рдЗрд╕рдХреЗ рдмрд╛рдж, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдирд┐рдпрдорд┐рдд, рдЧреИрд░-рдЬреНрдЮрд╛рдкрди рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рд╣реИрдВред рдмреЗрд╢рдХ, рдЬрдм
fib(45)
рдлрд┐рд░ рд╕реЗ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рддреБрд░рдВрдд рдХреИрд╢ рд╕реЗ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ - рд╣рд╛рд▓рд╛рдВрдХрд┐, рдкрд╣рд▓реА рдХреЙрд▓ рдореЗрдВ рддреЗрдЬреА рдирд╣реАрдВ рд╣реБрдИред рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЕрднреА рднреА рд░рд┐рдВрдЪ рдХреЗ рдиреАрдЪреЗ
oldFib
рдкреНрд░рд╛рдкреНрдд
oldFib
:
const oldFib = n => { if(n <= 1){ return n; }else{ return fib(n - 1) + fib(n - 2); } } const memoize = f => { const cache = {}; return arg => cache[arg] || (cache[arg] = f(arg)); } const fib = memoize(oldFib);
рдЕрджреНрднреБрдд! рдЕрдм рдкрд╣рд▓реА рдХреЙрд▓
fib(45)
рдПрдХ рд▓реВрдк рдХреЗ рд╕рд╛рде рд╕рдВрд╕реНрдХрд░рдг рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЧрддрд┐ рдкрд░ рдХрд╛рдо
fib(45)
ред рдФрд░ рдЖрдЧреЗ рдХреА рдЪреБрдиреМрддрд┐рдпрд╛рдВ рдЖрдо рддреМрд░ рдкрд░ рдирд┐рд░рдВрддрд░ рд╕рдордп рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдВрдЧреА ... рдЙрдлрд╝! рдлрд┐рд░ рд╕реЗ рдзреЛрдЦрд╛ рд╣реБрдЖред рдХреБрдВрдЬреА рджреНрд╡рд╛рд░рд╛ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреА рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдореВрд▓реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдПрдХ рддреНрд╡рд░рд┐рдд рдСрдкрд░реЗрд╢рди рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рднреА O (1) рдХреЗрд╡рд▓ рдФрд╕рдд рдкрд░ рд╣реИ, рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдпрд╣ O (n) рд╕реЗ рдиреАрдЪрд╛ рджрд┐рдЦрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕реЗ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдо рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рд╕рд░рдгреА рдореЗрдВ
cache
рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред
рдмреЗрд╢рдХ, рдХрд┐рд╕реА рдХреЛ рдпрд╣ рдирд╣реАрдВ рднреВрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╕рдВрд╕реНрдорд░рдг рдХреЗ рд▓рд┐рдП рд╕реНрдореГрддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдФрд░ рдЬрдм рд╣рдо рд╕рдордп рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рдХрдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕реНрдореГрддрд┐ рдЬрдЯрд┐рд▓рддрд╛ O (1) рд╕реЗ O (n) рддрдХ рдмрдврд╝рддреА рд╣реИред
рд╣рдо рдФрд░ рдХреИрд╕реЗ рджрд┐рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВ? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЧрдгрд┐рдд рдХреЗ рдЕрдкрдиреЗ рдЧрд╣рди рдЬреНрдЮрд╛рди рдХрд╛ рдкреНрд░рджрд░реНрд╢рди
4. рдорд┐рд╕реНрдЯрд░ рдмрд┐рдиреЗрдЯ
рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╕рдВрдмрдВрдзреЛрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд╕реВрддреНрд░реЛрдВ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖, рдЕрджреНрднреБрдд рд╡рд┐рдЬреНрдЮрд╛рди рд╣реИред рдпрд╣рд╛рдВ рд╣рдо рдЗрд╕рдХреЗ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдПрдВрдЧреЗред рд╣рдо рдХреЗрд╡рд▓ рдпрд╣ рдХрд╣реЗрдВрдЧреЗ рдХрд┐ рдлрд╛рдЗрдмреЛрдиреИрдЪрд┐ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рдХрд╛рдлреА рд╕рд░рд▓ рддрд░реНрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реВрддреНрд░ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ Binet рд╕реВрддреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ:
рдПрдл рдПрди = рдЪ рдЖрд░ рдПрдХ рд╕реА рдПрд▓ рдИ рдЪ рдЯреА ( рдЪ рдЖрд░ рдПрдХ рд╕реА 1 + рд░реЛрдВ рдХреНрд╖ рдЖрд░ рдЯреА 5 2 рдЖрд░ рдореИрдВ рдЫ рдЬ рдЯреА ) n - рдм рд╛ рдЦреЛрдЬ рдкрд░рд┐рдгрд╛рдо рдХреЗ рд▓рд┐ рдБ ( рдЪ рдЖрд░ рдПрдХ рд╕реА 1 - рд░реЛрдВ рдХреНрд╖ рдЖрд░ рдЯреА 5 2 r i g h t ) n s q r t 5
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдХрд╛рдлреА рдЧрдгрд┐рддреАрдп рднрд╛рд╖рд╛ рд╣реИ, рд╣рдо рдЗрд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
const fib = n => { const a = (1 + 5 ** 0.5) / 2; const b = (1 - 5 ** 0.5) / 2; return (a ** n - b ** n) / 5 ** 0.5; }
рдкрд╣рд▓реЗ рдХреБрдЫ рдирдВрдмрд░реЛрдВ рдкрд░ рдбреНрд░рд╛рдЗрд╡ рдХрд░рддреЗ рд╣реИрдВред рдорд╣рд╛рди, рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рдиреЗ рд▓рдЧрддрд╛ рд╣реИред рдпрд╣рд╛рдВ 13 рд╣реИ, рдпрд╣рд╛рдВ 21 рд╣реИ, рдпрд╣рд╛рдВ 34 рд╣реИ, рдпрд╣рд╛рдВ рд╣реИ ... 54.9999999999999999 рд╣реИ?
рд╣рд╛рдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдРрд╕рд╛ рдкрд░рд┐рдгрд╛рдо рддрд░реНрдХрд╕рдВрдЧрдд рд╣реИред рдмрд┐рдиреЗрдЯ рдХрд╛ рд╕реВрддреНрд░ рдЧрдгрд┐рддреАрдп рд░реВрдк рд╕реЗ рд╕рдЯреАрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░рд┐рдорд┐рдд рд╕рдЯреАрдХрддрд╛ рдХреЗ рдЕрдВрд╢реЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд▓рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдЙрдирдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд▓рди рдХреЗ рджреМрд░рд╛рди рдПрдХ рддреНрд░реБрдЯрд┐ рдЬрдорд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЬреЛ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣реБрдЖ рдерд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╣рдо рдЗрд╕реЗ рдареАрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдЬрд╛рдирдХрд░ рдХрд┐ рдЕрдВрд╢ рдореЗрдВ рдШрдЯрд╛рдпрд╛ рдЧрдпрд╛ рдкрд░рд┐рдорд╛рдг рд╣рдореЗрд╢рд╛ рдЫреЛрдЯрд╛ рд╣реЛрдЧрд╛, рд╣рдо рдирд┐рдореНрди рдЕрд╡рд╕реНрдерд╛ рдХреЗ рд▓рд┐рдП рд╕реВрддреНрд░ рдХреЛ рд╕рд░рд▓ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ:
Fn= left lfloor frac left( frac1+ sqrt52 right)n sqrt5 right rceil
рдпрд╣рд╛рдВ рдЕрдЬреАрдм рдЕрдзреВрд░рд╛ рд╡рд░реНрдЧ рдХреЛрд╖реНрдардХ рдХрд╛ рдЕрд░реНрде рд╣реИ рдирд┐рдХрдЯрддрдо рдкреВрд░реНрдгрд╛рдВрдХ, рдЕрд░реНрдерд╛рдд рдЧреЛрд▓рд╛рдИред рд╣рдорд╛рд░реЗ рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреЗрдВ:
const fib = n => { const a = (1 + 5 ** 0.5) / 2; return Math.round(a ** n / 5 ** 0.5); }
рд╣рд╛рдБ, рдпрд╣ рдмрд╣реБрдд рдмреЗрд╣рддрд░ рд╣реИ рд╣рдо 55 рдФрд░ 89 рджреЛрдиреЛрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдореЗрд░реА рдкрд╕рдВрджреАрджрд╛ рдлрд┐рдмреЛрдирд╛рдЪреА рд╕рдВрдЦреНрдпрд╛ 144 рд╣реИ (рдЬреЛ рдореБрдЭреЗ рдкрд╕рдВрдж рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмрд╛рд░рд╣ рд╡рд░реНрдЧреЛрдВ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ)ред рд╕рдВрдЦреНрдпрд╛ 76 рддрдХ рд╕рдм рдХреБрдЫ рдареАрдХ рд░рд╣реЗрдЧрд╛ред рдЬреЛ 3416454622906707 рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рд╣рдорд╛рд░рд╛ рдХрд╛рд░реНрдп 3416454622906706 рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдЧрд╛ред рдХреНрдпреЛрдВрдХрд┐ рднрд┐рдиреНрдирд╛рддреНрдордХ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рд╕реАрдорд┐рдд рд╕рдЯреАрдХрддрд╛ рдХреА рд╕рдорд╕реНрдпрд╛ рджреВрд░ рдирд╣реАрдВ рд╣реБрдИ рд╣реИ, рд╣рдордиреЗ рдЗрд╕реЗ рдФрд░ рдЧрд╣рд░рд╛ рдХрд░ рджрд┐рдпрд╛ рдФрд░ рдЙрдореНрдореАрдж рдХреА рдХрд┐ рдпрд╣ рдирд╣реАрдВ рдЖрдПрдЧреАред рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ, рд╡реЗ рд╡реНрдпрд░реНрде рдореЗрдВ рдЖрд╢рд╛ рдХрд░рддреЗ рдереЗред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдо рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдФрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдиреАрдЪреЗред рдЗрд╕ рдмреАрдЪ - рдПрдХ рддрд░рдл рдордЬрд╛рдХ рдХрд░рддрд╛ рд╣реИред рдЪрд▓реЛ рдХрдареЛрд░, рдХрдЯреНрдЯрд░ рдФрд░ рдХреНрд░реВрд░ рд╡рд┐рдзрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВред
5. рд╕рдлреЗрдж рдЦрд░рдЧреЛрд╢ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВред
рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдпрджрд┐ рдЖрдкрдХреЛ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдЖрдпрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕реЗ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдЕрдм рдЖрдкрдХреЛ рджреЛ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВред рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдореИрдЯреНрд░рд┐рд╕реЗрд╕ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИрдВред рдХрдИ рд╕рдорд╕реНрдпрд╛рдПрдВ, рдпрджрд┐ рдореИрдЯреНрд░рд┐рд╕реЗрд╕ рдХреА рднрд╛рд╖рд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреА рдЬрд╛рддреА рд╣реИрдВ, рддреЛ рдмрд╕ рдЕрдкрдиреЗ рдЖрдк рд╣реА рд╣рд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИрдВред
рдлрд┐рдмреЛрдирд╛рдЪреА рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рдореИрдЯреНрд░рд┐рдХреНрд╕ рднрд╛рд╖рд╛ рдореЗрдВ рдЙрдирдХреЗ рд▓рд┐рдП рдЖрдк рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдкрд╣рдЪрд╛рди рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:
\ start {pmatrix} 0 & 1 \\ 1 & 1 \ end {pmatrix} \ start {pmatrix} F_ {n - 1} \\ F_n \ end {pmatrix} = \ start {pmatrix}: F_n \\ F_ {n +1} \ n рдЕрдВрдд {pmatrix}
рдпрд╣реА рд╣реИ, рдЕрдЧрд░ рд╣рдо рд▓рдЧрд╛рддрд╛рд░ рдлрд╛рдЗрдмреЛрдиреИрдЪрд┐ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рдПрдХ рдЬреЛрдбрд╝реА рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдРрд╕реЗ рд╕рд░рд▓ рдореИрдЯреНрд░рд┐рдХреНрд╕ рджреНрд╡рд╛рд░рд╛ рдЧреБрдгрд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝реА рдорд┐рд▓рддреА рд╣реИред рдФрд░ рдЗрд╕ рд╕реЗ рддрд╛рд░реНрдХрд┐рдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд▓рддрд╛ рд╣реИ: рдпрджрд┐ рд╣рдо рд╢реВрдиреНрдп рдФрд░ рдкрд╣рд▓реЗ рдлрд╛рдЗрдмреЛрдиреИрдЪрд┐ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рдПрдХ рдЬреЛрдбрд╝реА рд▓реЗрддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреН рд╢реВрдиреНрдп рдФрд░ рдПрдХ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЗрд╕ рдореИрдЯреНрд░рд┐рдХреНрд╕ рджреНрд╡рд╛рд░рд╛ рдПрдирдЯреАрдЯреА рдкрд╛рд╡рд░ рд╕реЗ рдЧреБрдгрд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдПрдирдЯреА рдФрд░ рдПрди рдкреНрд▓рд╕ рдХреА рдкрд╣рд▓реА рдЬреЛрдбрд╝реА рдорд┐рд▓рддреА рд╣реИред рдЕрд░реНрдерд╛рддреН, рдорд╛рдирд╡реАрдп рдмреЛрд▓рдирд╛:
\ start {pmatrix} 0 & 1 \\ 1 & 1 \ end {pmatrix} ^ n \ start {pmatrix} 0 \\ 1 \ end {pmatrix} = \ start {pmatrix} F_n \\ \ _ {n + 1} \ рдЕрдВрдд {pmatrix}
рдЖрдк рд╡реИрдХреНрдЯрд░ рдХреЛ рддреНрдпрд╛рдЧрдХрд░ рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рдФрд░ рд╕рд░рд▓ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдореВрд▓реНрдп рдореИрдЯреНрд░рд┐рдХреНрд╕ рдореЗрдВ рд╣реА рдирд┐рд╣рд┐рдд рд╣реИрдВ:
\ start {pmatrix} 0 & 1 \\ 1 & 1 \ end {pmatrix} ^ n = \ start {pmatrix} F_ {n-1} рдФрд░ F_ {n} \\ F_ {n} & F_ / n + 1 } \ end {pmatrix}
рдорд╣рд╛рди, рд╣реИ рдирд╛? рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣реИ, рд╕рджреНрднрд╛рд╡ рдХреЗ рд▓рд┐рдП, рдЕрдЧрд░ рд╡рд╣ рдПрдХ рдзрд░реНрдордЬреНрдЮ рдирд╣реАрдВ рд╣реИред рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ - рдиреАрд▓реЗ рд░рдВрдЧ рд╕реЗ рдРрд╕реА рдХрдард┐рдирд╛рдЗрдпрд╛рдБ рдХреНрдпреЛрдВ рд╣реИрдВред рдФрд░ рдЬрд╡рд╛рдм рд╕рд░рд▓ рд╣реИ - рддреЗрдЬреА рд╕реЗ рдШрд╛рддрд╛рдВрдХред
рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рддрдиреЗ рдкреНрд░рд╛рдердорд┐рдХ рдЧреБрдгрди рд╣реИрдВ, рдХрд╣рддреЗ рд╣реИрдВ, 2
10 ? рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╡реНрдпрдХреНрддрд┐ рдиреМ рдХрд╣реЗрдЧрд╛ред рджреЛ рдмрд╛рд░ - рдЪрд╛рд░ред рджреЛ рдмрд╛рд░ рдЪрд╛рд░ - рдЖрдаред рджреЛ рдмрд╛рд░ рдЖрда рд╕реЛрд▓рд╣ рд╣реИред рдФрд░ рдЗрд╕реА рддрд░рд╣ред рдПрдХ рдЪрд╛рд▓рд╛рдХ рд╡реНрдпрдХреНрддрд┐ рдХрд╣реЗрдЧрд╛ рдХрд┐ рдЪрд╛рд░ред
2 cdot2=44 cdot4=162 cdot16=3232 cdot32=1024
рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХрд╣реЗрдЧрд╛ред рд╡рд╣ рдЗрд╕ рд╕рдВрдЦреНрдпрд╛ рдХреЛ рджрд┐рд▓ рд╕реЗ рдпрд╛рдж рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдХреБрдЫ рднреА рдЧреБрдгрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╣рдордиреЗ рдКрдкрд░ рд╕рдВрд╕реНрдорд░рдг рдХреЗ рдореБрджреНрджреЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреАред
рддреЛ, рдПрдХ рддреНрд╡рд░рд┐рдд рдШрд╛рддрд╛рдВрдХ рднреА рдореИрдЯреНрд░рд┐рд╕реЗрд╕ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╣рдореЗрдВ рд╣рдорд╛рд░реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрд╕рдордорд┐рдд рд╕рдордп рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рдУ (рдПрди) рд╕реЗ рдУ (рд▓реЙрдЧ рдПрди) рддрдХ рдХрдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИред рдФрд░ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ - рдЬрдм рддрдХ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдпрд╣ рдЬрдЯрд┐рд▓рддрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рд╡рд╛рдЗрд▓реНрдб рд╡реЗрд╕реНрдЯ рдореЗрдВ рд╕рдмрд╕реЗ рддреЗрдЬ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдорд┐рд▓рд╛ред рдФрд░ рдпрд╣, рдкрд┐рдЫрд▓реЗ рд╡рд╛рд▓реЗ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдПрдХ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдореЗрдВ рдЧреИрд░-рд╡рд┐рдбрдВрдмрдирд╛рдкреВрд░реНрдг рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдХреБрдЫ рдЧрдгрд┐рддреАрдп-рдХреНрд╖рдорддрд╛ рд╡рд╛рд▓реЗ рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рдпрд╣ рдЖрдкрд╕реЗ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реЛрдЧрд╛ред
рдкреБрдирд╢реНрдЪ
рдореИрдВрдиреЗ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдХрд╛ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рдХрд┐ рдХреИрд╕реЗ рдмрд┐рдиреЗрдЯ рдлреЙрд░реНрдореВрд▓рд╛ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдкрджреНрдзрддрд┐ рдХреЛ рдмрдЪрд╛рдпрд╛ рдЬрд╛рдПред рдЬрд╡рд╛рдм рдореЗрд░реЗ
рдЗрд╕ рд▓реЗрдЦ
рдореЗрдВ рдирд┐рд╣рд┐рдд
рд╣реИ ред рд╡рд╣рд╛рдВ, рд░рд╛рд╖реНрдЯреНрд░реАрдп рдЕрд░реНрдерд╡реНрдпрд╡рд╕реНрдерд╛ рдХреА рдЬрд░реВрд░рддреЛрдВ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд░реНрдЧ рд▓рд┐рдЦрд╛, рдкрд╛рдВрдЪ рддрд░реНрдХрд╕рдВрдЧрдд рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рдЬрдбрд╝, рдЬреЛ рд╕рдЯреАрдХрддрд╛ рдХреЗ рдиреБрдХрд╕рд╛рди рдХреЗ рдмрд┐рдирд╛, рдкреВрд░реНрдгрд╛рдВрдХреЛрдВ рдкрд░ рдЕрдВрдХрдЧрдгрд┐рддреАрдп рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдФрд░ рдкрд╛рдВрдЪ рдХреА рдЬрдбрд╝ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░ рд╕рдХрддреА рд╣реИред рдЖрдк рдЗрд╕ рд╡рд░реНрдЧ рдХреЛ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕реЗ рд░рд╛рдЙрдВрдбрд┐рдВрдЧ рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде рдкреВрд░рдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд┐рдиреЗрдЯ рд╕реВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╛рдЗрдмреЛрдиреИрдЪрд┐ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдлрд┐рд░ рддреЗрдЬреА рд╕реЗ рдПрдХреНрд╕рдлреЛрд▓рд┐рдПрд╢рди рд▓рдЧрд╛рдХрд░ рдирд╛рдЗрдЯреНрд░рд╕ рдСрдХреНрд╕рд╛рдЗрдб рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░реЗрдВред
рдФрд░ рдХреНрдпрд╛ рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ: рдпрджрд┐ рдЖрдк рдзреНрдпрд╛рди рд╕реЗ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдХреМрди рд╕реЗ рдирдВрдмрд░ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ, рдХреМрди рд╕реЗ рд╕рдВрдЪрд╛рд▓рди рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ, рддреЛ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рдпрд╣ рд╡рд┐рдзрд┐ рдПрдХ рд╣реА рдореИрдЯреНрд░рд┐рдХреНрд╕ рдЧреБрдгрди рд╣реИ, рдХреЗрд╡рд▓ рдПрдХ рдЕрд▓рдЧ рдкрд╣рд▓реВ рдХреЗ рддрд╣рддред рдПрдХрдорд╛рддреНрд░ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣рдо рд╕рдВрдЦреНрдпрд╛ рдХреЛ рджреЛ-рдЖрдпрд╛рдореА рд╕рд░рдгрд┐рдпреЛрдВ рдореЗрдВ рдпрд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд░реНрдЧ рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВред
рд╡рд╣ рд╕рдм рд╣реИред рдЕрдЧрд░ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдирдВрдмрд░ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЕрдиреНрдп рджрд┐рд▓рдЪрд╕реНрдк рддрд░реАрдХреЗ рдпрд╛рдж рдХрд┐рдП рд╣реИрдВ, рдЬрд┐рдирдХреА рдХрд┐рд╕реА рдХреЛ рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ, рддреЛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВред
рддреЗрдЬреА рд╕реЗ рджреЛрд╣рд░реАрдХрд░рдг рдЬреИрд╕реА рдПрдХ рд╡рд┐рдзрд┐ рднреА рд╣реИред рдпрд╣ O (рд▓реЙрдЧ) рдореЗрдВ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдЧреБрдгрди рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрд╕рд┐рдореНрдкреЛрдЯрд┐рдХреНрд╕ (рдФрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ) рдореЗрдВ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рд╕рд╛рдеред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рддрдм рджреЛ рдлрд╛рд░реНрдореВрд▓реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рддреЗ рд╣реБрдП рд╡реНрдпрдХреНрддрд┐ рдЬрд▓реНрджреА рд╕реЗ рджреЛ рдмрд╛рд░ рдХрдо рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдкрд░ рдкреБрди: рдЖрд╡рд░реНрддреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:
рдПрдл 2 рдПрди = рдПрдл рдПрди * (2 * рдПрдл рдПрди + 1 - рдПрдл рдПрди )
рдПрдл 2 рдПрди + 1 = рдПрдл рдПрди 2 + рдПрдл рдПрди + 1 2
рд╡реИрд╕реЗ, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛рдлреА рдХреЙрдореНрдкреИрдХреНрдЯ рд╣реИред
рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рдХреА рдЧрддрд┐ рдХреА рддреБрд▓рдирд╛
just_maksim