Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ числа Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

Π§Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π½Π°Ρ‚ΡŒ программист Π½Π° Java ΠΎ числах Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ

Π‘Ρ‚ΠΎΠΈΡ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° 0 опускаСтся, ΠΈ ряд начинаСтся с 1 1 2 3… Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Π² условиях Π·Π°Π΄Π°Ρ‡ΠΈ сразу уточняСтся, с ΠΊΠ°ΠΊΠΈΡ… ΠΏΠ΅Ρ€Π²Ρ‹Ρ… Π΄Π²ΡƒΡ… чисСл начинаСтся ряд (0,1 ΠΈΠ»ΠΈ 1,1), поэтому дальшС ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ для ΠΎΠ±ΠΎΠΈΡ… случаСв.

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π²Ρ‹Ρ… n чисСл Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² Java

К Π½Π°ΠΌ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ Π½Π΅ΠΊΠΎΠ΅ число n:

ΠœΡ‹ создаём массив Ρ€Π°Π·ΠΌΠ΅Ρ€Π° n. ΠŸΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π° элСмСнта Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π²Π½Ρ‹ Π½ΡƒΠ»ΡŽ ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡ†Π΅, Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ элСмСнты ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ, ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΡΡΡŒ ΠΏΠΎ Π΄Π°Π½Π½ΠΎΠΌΡƒ Ρ†ΠΈΠΊΠ»Ρƒ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ числа ΠΈΠ· массива.

И Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π½Π° экран:

для случая 1,1 Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ фактичСски Π½Π΅ отличаСтся:

Всё, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ β€” это ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт массива arr[0]: с 0 Π½Π° 1. БоотвСтствСнно, ΠΏΠ΅Ρ€Π²Ρ‹Π΅ 10 элСмСнтов Π±ΡƒΠ΄ΡƒΡ‚:

ΠŸΠ΅Ρ€Π²Ρ‹Π΅ n чисСл Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Ρ‡Π΅Ρ€Π΅Π· stream

БтатичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ iterate класса Stream Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ бСсконСчный упорядочСнный ΠΏΠΎΡ‚ΠΎΠΊ, созданный ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌΡƒ массиву arr. Π’ нашСм случаС Π² качСствС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ слуТит Π·Π°Π΄Π°Π½ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° составлСния ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ массива, ΠΎΡΠ½ΠΎΠ²Ρ‹Π²Π°ΡΡΡŒ Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ. Как ΠΈΡ‚ΠΎΠ³ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΏΠΎΡ‚ΠΎΠΊ ΠΈΠ· массивов:

Выглядит ΠΏΠΎΠΊΡ€ΡƒΡ‡Π΅, Π½Π΅ Ρ‚Π°ΠΊ Π»ΠΈ?

Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ числа Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ числа Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ числа Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ числа Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ числа Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹Ρ… элСмСнтах 1,1 этот ΠΊΠΎΠ΄ Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΡ‡Ρ‚ΠΈ Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅:

ΠžΠΏΡΡ‚ΡŒ ΠΆΠ΅, различия β€” Π² Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌ элСмСнтС: вмСсто <0, 1>Π·Π°Π΄Π°Ρ‘ΠΌ

БобствСнно, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅.

Π‘ΡƒΠΌΠΌΠ° чисСл Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ n-ΠΎΠ³ΠΎ число Π² рядС Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ

Для выполнСния Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° с 0,1 Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ 0, Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ β€” 1. По сути Π½Π°ΠΌ, ΠΊΠ°ΠΊ ΠΈ Π² ΠΏΡ€ΠΎΡˆΠ»Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΡ…, Π½ΡƒΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π° элСмСнта.

рСализация для 1,1 Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ:

Π’ этом случаС Π½Π°ΠΌ достаточно Π·Π°Π΄Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт ΠΊΠ°ΠΊ 1, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π²Ρ‚ΠΎΡ€ΠΎΠΉ элСмСнт Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅, ΠΈ рСакция ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅.

ΠŸΡ€ΠΈ этом ΠΌΡ‹ Π·Π°Π΄Π°Ρ‘ΠΌ Ρ€Π΅Π°ΠΊΡ†ΠΈΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π½Π° 0, вСдь Ссли Π½Π΅ Π·Π°Π΄Π°Ρ‚ΡŒ, Ρ‚ΠΎ ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΠ΄Ρ‘Ρ‚ 2 ΠΊΠ°ΠΊ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚, рСкурсивно вызываСтся этот ΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄, Π½ΠΎ с Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ 0. Π”Π°Π»Π΅Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ этот ΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄, Π½ΠΎ ΡƒΠΆΠ΅ с ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ числами ΠΈ Ρ‚Π°ΠΊ Π΄ΠΎ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ бСсконСчности. Как ΠΈΡ‚ΠΎΠ³ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ StackOverflowError.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

5 способов вычислСния чисСл Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ: рСализация ΠΈ сравнСниС

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚Π°ΠΌ числа Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠΆΠ΅ ΠΏΠΎΠ΄Π½Π°Π΄ΠΎΠ΅ΡΡ‚ΡŒ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΈΡ… вычислСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π²Π΅Π·Π΄Π΅. Всё ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ эти числа ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ рСкурсии. А Π΅Ρ‰Ρ‘ ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ динамичСского программирования. Но Π½Π°Π΄ΠΎ Π»ΠΈ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ ΠΈΡ… Ρ‚Π°ΠΊ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅? НС Π½Π°Π΄ΠΎ. Ни рСкурсия, Π½ΠΈ динамичСскоС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°ΠΌΠΈ. И Π½Π΅ замкнутая Ρ„ΠΎΡ€ΠΌΡƒΠ»Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π°Ρ числа с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой. БСйчас я расскаТу, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ. Но сначала пройдёмся ΠΏΠΎ всСм извСстным Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ.

Код ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для Python 3, хотя Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠ΄Ρ‚ΠΈ ΠΈ Π½Π° Python 2.

Для Π½Π°Ρ‡Π°Π»Π° – напомню ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅:

Замкнутая Ρ„ΠΎΡ€ΠΌΡƒΠ»Π°

Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ числа Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ числа Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ числа Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ числа Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ числа Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ числа Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ числа Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ числа Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ числа Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ числа Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ числа Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ числа Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ числа Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ числа Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ числа Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

РСшаСм ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½ΠΎΠ΅ ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠ΅:

Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ числа Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ числа Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ числа Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ числа Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ числа Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

ΠžΡ‚ΠΊΡƒΠ΄Π° ΠΈ растёт Β«Π·ΠΎΠ»ΠΎΡ‚ΠΎΠ΅ сСчСниС» Ο•=(1+√5)/2. ΠŸΠΎΠ΄ΡΡ‚Π°Π²ΠΈΠ² исходныС значСния ΠΈ ΠΏΡ€ΠΎΠ΄Π΅Π»Π°Π² Π΅Ρ‰Ρ‘ вычислСния, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ:

Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ числа Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ числа Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ числа Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ числа Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ числа Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

Ρ‡Ρ‚ΠΎ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ для вычислСния Fn.

Π₯ΠΎΡ€ΠΎΡˆΠ΅Π΅:
Быстро ΠΈ просто для ΠΌΠ°Π»Ρ‹Ρ… n
ΠŸΠ»ΠΎΡ…ΠΎΠ΅:
Π’Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой. Для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… n потрСбуСтся большая Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ.
Π—Π»ΠΎΠ΅:
ИспользованиС комплСксных чисСл для вычислСния Fn красиво с матСматичСской Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния, Π½ΠΎ ΡƒΡ€ΠΎΠ΄Π»ΠΈΠ²ΠΎ β€” с ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΉ.

РСкурсия

Π‘Π°ΠΌΠΎΠ΅ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹ ΡƒΠΆΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π· Π²ΠΈΠ΄Π΅Π»ΠΈ – скорСС всСго, Π² качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсия. ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡŽ Π΅Π³ΠΎ Π΅Ρ‰Ρ‘ Ρ€Π°Π·, для ΠΏΠΎΠ»Π½ΠΎΡ‚Ρ‹. Π’ Python Π΅Ρ‘ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² ΠΎΠ΄Π½Ρƒ строку:

Π₯ΠΎΡ€ΠΎΡˆΠ΅Π΅:
ΠžΡ‡Π΅Π½ΡŒ простая рСализация, ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰Π°Ρ матСматичСскоС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅
ΠŸΠ»ΠΎΡ…ΠΎΠ΅:
Π­ΠΊΡΠΏΠΎΠ½Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ врСмя выполнСния. Для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… n ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ
Π—Π»ΠΎΠ΅:
ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ стСка

Π—Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅

Π£ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ с рСкурсиСй Π΅ΡΡ‚ΡŒ большая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°: ΠΏΠ΅Ρ€Π΅ΡΠ΅ΠΊΠ°ΡŽΡ‰ΠΈΠ΅ΡΡ вычислСния. Когда вызываСтся fib(n), Ρ‚ΠΎ ΠΏΠΎΠ΄ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ fib(n-1) ΠΈ fib(n-2). Но ΠΊΠΎΠ³Π΄Π° считаСтся fib(n-1), ΠΎΠ½Π° снова нСзависимо подсчитаСт fib(n-2) – Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, fib(n-2) подсчитаСтся Π΄Π²Π°ΠΆΠ΄Ρ‹. Если ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ рассуТдСния, Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ fib(n-3) Π±ΡƒΠ΄Π΅Ρ‚ подсчитана Ρ‚Ρ€ΠΈΠΆΠ΄Ρ‹, ΠΈ Ρ‚.Π΄. Блишком ΠΌΠ½ΠΎΠ³ΠΎ пСрСсСчСний.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π½Π°Π΄ΠΎ просто Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΠΎΠ΄ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΡ… снова. ВрСмя ΠΈ ΠΏΠ°ΠΌΡΡ‚ΡŒ Ρƒ этого Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Ρ€Π°ΡΡ…ΠΎΠ΄ΡƒΡŽΡ‚ΡΡ Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Π’ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ, Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ простой массив.

(Π’ Python это ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Π°, functools.lru_cache.)

Π₯ΠΎΡ€ΠΎΡˆΠ΅Π΅:
ΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΡŽ Π² Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ с Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ΠΌ. ΠŸΡ€Π΅Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡΠΊΡΠΏΠΎΠ½Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ врСмя Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π² Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ΅, для Ρ‡Π΅Π³ΠΎ Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ большС памяти.
ΠŸΠ»ΠΎΡ…ΠΎΠ΅:
Π’Ρ€Π°Ρ‚ΠΈΡ‚ ΠΌΠ½ΠΎΠ³ΠΎ памяти
Π—Π»ΠΎΠ΅:
Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ стСка, ΠΊΠ°ΠΊ ΠΈ Ρƒ рСкурсии

ДинамичСскоС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

ПослС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ с Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ΠΌ становится понятно, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹ Π½Π΅ всС ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π²Π° послСдних. ΠšΡ€ΠΎΠΌΠ΅ этого, вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ с fib(n) ΠΈ ΠΈΠ΄Ρ‚ΠΈ Π½Π°Π·Π°Π΄, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Ρ‡Π°Ρ‚ΡŒ с fib(0) ΠΈ ΠΈΠ΄Ρ‚ΠΈ Π²ΠΏΠ΅Ρ€Ρ‘Π΄. Π£ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠ΄Π° Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ΅ врСмя Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, Π° использованиС памяти – фиксированноС. На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π±ΡƒΠ΄Π΅Ρ‚ Π΅Ρ‰Ρ‘ Π²Ρ‹ΡˆΠ΅, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ‚ΡƒΡ‚ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ рСкурсивныС Π²Ρ‹Π·ΠΎΠ²Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ связанная с этим Ρ€Π°Π±ΠΎΡ‚Π°. И ΠΊΠΎΠ΄ выглядит ΠΏΡ€ΠΎΡ‰Π΅.

Π­Ρ‚ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ часто приводится Π² качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° динамичСского программирования.

Π₯ΠΎΡ€ΠΎΡˆΠ΅Π΅:
Быстро Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ для ΠΌΠ°Π»Ρ‹Ρ… n, простой ΠΊΠΎΠ΄
ΠŸΠ»ΠΎΡ…ΠΎΠ΅:
Всё Π΅Ρ‰Ρ‘ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ΅ врСмя выполнСния
Π—Π»ΠΎΠ΅:
Π”Π° особо Π½ΠΈΡ‡Π΅Π³ΠΎ.

ΠœΠ°Ρ‚Ρ€ΠΈΡ‡Π½Π°Ρ Π°Π»Π³Π΅Π±Ρ€Π°

И, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, Π½Π°ΠΈΠΌΠ΅Π½Π΅Π΅ освСщаСмоС, Π½ΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, Π³Ρ€Π°ΠΌΠΎΡ‚Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅Π΅ ΠΊΠ°ΠΊ врСмя, Ρ‚Π°ΠΊ ΠΈ ΠΏΠ°ΠΌΡΡ‚ΡŒ. Π•Π³ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ Π½Π° Π»ΡŽΠ±ΡƒΡŽ Π³ΠΎΠΌΠΎΠ³Π΅Π½Π½ΡƒΡŽ Π»ΠΈΠ½Π΅ΠΉΠ½ΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. ИдСя Π² использовании ΠΌΠ°Ρ‚Ρ€ΠΈΡ†. Достаточно просто Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ

Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ числа Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ числа Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ числа Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ числа Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ числа Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

А ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ этого Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ

Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ числа Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ числа Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ числа Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ числа Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ числа Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

Π”Π²Π° значСния для x, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… Π½Π°ΠΌΠΈ Ρ€Π°Π½Π΅Π΅, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ΄Π½ΠΎ прСдставляло собою Π·ΠΎΠ»ΠΎΡ‚ΠΎΠ΅ сСчСниС, ΡΠ²Π»ΡΡŽΡ‚ΡΡ собствСнными значСниями ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½ΠΈΠΌ способом Π²Ρ‹Π²ΠΎΠ΄Π° Π·Π°ΠΌΠΊΠ½ΡƒΡ‚ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹ являСтся использованиС ΠΌΠ°Ρ‚Ρ€ΠΈΡ‡Π½ΠΎΠ³ΠΎ уравнСния ΠΈ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ Π°Π»Π³Π΅Π±Ρ€Ρ‹.

Π’Π°ΠΊ Ρ‡Π΅ΠΌ ΠΆΠ΅ ΠΏΠΎΠ»Π΅Π·Π½Π° такая Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²ΠΊΠ°? Π’Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π²ΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ ΠΌΠΎΠΆΠ½ΠΎ произвСсти Π·Π° логарифмичСскоС врСмя. Π­Ρ‚ΠΎ дСлаСтся Ρ‡Π΅Ρ€Π΅Π· возвСдСния Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚. Π‘ΡƒΡ‚ΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ

Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ числа Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ числа Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ числа Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ числа Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ числа Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

Π³Π΄Π΅ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Ρ‡Ρ‘Ρ‚Π½Ρ‹Ρ… A, Π²Ρ‚ΠΎΡ€ΠΎΠ΅ для Π½Π΅Ρ‡Ρ‘Ρ‚Π½Ρ‹Ρ…. ΠžΡΡ‚Π°Π»ΠΎΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ пСрСмноТСния ΠΌΠ°Ρ‚Ρ€ΠΈΡ†, ΠΈ всё Π³ΠΎΡ‚ΠΎΠ²ΠΎ. ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄. Π― ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π» Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΠ²Π½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ pow, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π΅Ρ‘ ΠΏΡ€ΠΎΡ‰Π΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ. Π˜Ρ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ смотритС Ρ‚ΡƒΡ‚.

Π₯ΠΎΡ€ΠΎΡˆΠ΅Π΅:
Ѐиксированный ΠΎΠ±ΡŠΡ‘ΠΌ памяти, логарифмичСскоС врСмя
ΠŸΠ»ΠΎΡ…ΠΎΠ΅:
Код послоТнСС
Π—Π»ΠΎΠ΅:
ΠŸΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ΡΡ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°ΠΌΠΈ, хотя ΠΎΠ½ΠΈ Π½Π΅ Ρ‚Π°ΠΊ ΡƒΠΆ ΠΈ ΠΏΠ»ΠΎΡ…ΠΈ

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ быстродСйствия

Π‘Ρ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ стоит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ динамичСского программирования ΠΈ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹. Если ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΡ… ΠΏΠΎ количСству Π·Π½Π°ΠΊΠΎΠ² Π² числС n, Ρ‚ΠΎ получится, Ρ‡Ρ‚ΠΎ ΠΌΠ°Ρ‚Ρ€ΠΈΡ‡Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ, Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ с динамичСским ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ – ΡΠΊΡΠΏΠΎΠ½Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ. ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ – вычислСниС fib(10 ** 6), числа, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ большС двухсот тысяч Π·Π½Π°ΠΊΠΎΠ².

n = 10 ** 6
ВычисляСм fib_matrix: Ρƒ fib(n) всСго 208988 Ρ†ΠΈΡ„Ρ€, расчёт занял 0.24993 сСкунд.
ВычисляСм fib_dynamic: Ρƒ fib(n) всСго 208988 Ρ†ΠΈΡ„Ρ€, расчёт занял 11.83377 сСкунд.

ВСорСтичСскиС замСчания

НС Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ касаясь ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π°, Π΄Π°Π½Π½ΠΎΠ΅ Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ всё-Ρ‚Π°ΠΊΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΉ интСрСс. Рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π³Ρ€Π°Ρ„:

Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ числа Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ числа Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ числа Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ числа Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ числа Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

ΠŸΠΎΠ΄ΡΡ‡ΠΈΡ‚Π°Π΅ΠΌ количСство ΠΏΡƒΡ‚Π΅ΠΉ Π΄Π»ΠΈΠ½Ρ‹ n ΠΎΡ‚ A Π΄ΠΎ B. НапримСр, для n = 1 Ρƒ нас Π΅ΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΏΡƒΡ‚ΡŒ, 1. Для n = 2 Ρƒ нас ΠΎΠΏΡΡ‚ΡŒ Π΅ΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΏΡƒΡ‚ΡŒ, 01. Для n = 3 Ρƒ нас Π΅ΡΡ‚ΡŒ Π΄Π²Π° ΠΏΡƒΡ‚ΠΈ, 001 ΠΈ 101. Π”ΠΎΠ²ΠΎΠ»ΡŒΠ½ΠΎ просто ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ количСство ΠΏΡƒΡ‚Π΅ΠΉ Π΄Π»ΠΈΠ½Ρ‹ n ΠΎΡ‚ А Π΄ΠΎ Π’ Ρ€Π°Π²Π½ΠΎ Π² точности Fn. Записав ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ смСТности для Π³Ρ€Π°Ρ„Π°, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Ρ‚Π°ΠΊΡƒΡŽ ΠΆΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ, которая Π±Ρ‹Π»Π° описана Π²Ρ‹ΡˆΠ΅. Π­Ρ‚ΠΎ извСстный Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΈΠ· Ρ‚Π΅ΠΎΡ€ΠΈΠΈ Π³Ρ€Π°Ρ„ΠΎΠ², Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅ смСТности А, вхоТдСния Π² А n β€” это количСство ΠΏΡƒΡ‚Π΅ΠΉ Π΄Π»ΠΈΠ½Ρ‹ n Π² Π³Ρ€Π°Ρ„Π΅ (ΠΎΠ΄Π½Π° ΠΈΠ· Π·Π°Π΄Π°Ρ‡, ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π²ΡˆΠΈΡ…ΡΡ Π² Ρ„ΠΈΠ»ΡŒΠΌΠ΅ Β«Π£ΠΌΠ½ΠΈΡ†Π° Π£ΠΈΠ»Π» Π₯Π°Π½Ρ‚ΠΈΠ½Π³Β»).

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π½Π° Ρ€Ρ‘Π±Ρ€Π°Ρ… стоят Ρ‚Π°ΠΊΠΈΠ΅ обозначСния? ΠžΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ рассмотрСнии бСсконСчной ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ символов Π½Π° бСсконСчной Π² ΠΎΠ±Π΅ стороны ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡƒΡ‚Π΅ΠΉ Π½Π° Π³Ρ€Π°Ρ„Π΅, Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π½Π΅Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ «ΠΏΠΎΠ΄ΡΠ΄Π²ΠΈΠ³ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°», ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅Π΅ собой Ρ‚ΠΈΠΏ систСмы символичСской Π΄ΠΈΠ½Π°ΠΌΠΈΠΊΠΈ. ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ этот подсдвиг ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° извСстСн, ΠΊΠ°ΠΊ «сдвиг Π·ΠΎΠ»ΠΎΡ‚ΠΎΠ³ΠΎ сСчСния», ΠΈ задаётся Π½Π°Π±ΠΎΡ€ΠΎΠΌ Β«Π·Π°ΠΏΡ€Π΅Ρ‰Ρ‘Π½Π½Ρ‹Ρ… слов» <11>. Π˜Π½Ρ‹ΠΌΠΈ словами, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ бСсконСчныС Π² ΠΎΠ±Π΅ стороны Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ ΠΏΠ°Ρ€Ρ‹ ΠΈΠ· Π½ΠΈΡ… Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ смСТными. ВопологичСская энтропия этой динамичСской систСмы Ρ€Π°Π²Π½Π° Π·ΠΎΠ»ΠΎΡ‚ΠΎΠΌΡƒ ΡΠ΅Ρ‡Π΅Π½ΠΈΡŽ Ο•. Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ, ΠΊΠ°ΠΊ это число пСриодичСски появляСтся Π² Ρ€Π°Π·Π½Ρ‹Ρ… областях ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠŸΠΎΡ‡Π΅ΠΌΡƒ числа Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π·Π½Π°Ρ‡ΠΈΠΌΡ‹ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅?

числа Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ стали популярным Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΡŽ для студСнтов ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… Π½Π°ΡƒΠΊ ΠΈ Π΅ΡΡ‚ΡŒ ΡΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π² ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π΅. По этим ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· нас Π·Π½Π°ΠΊΠΎΠΌΡ‹ с Π½ΠΈΠΌΠΈ.

Они Ρ‚Π°ΠΊΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π² ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΉ Π½Π°ΡƒΠΊΠ΅ ΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… мСстах; Π² ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ эффСктивных структурах Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°Ρ…, основанных Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

Π΅ΡΡ‚ΡŒ Π΄Π²Π° основных ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ приходят Π½Π° ΡƒΠΌ:

Π΅ΡΡ‚ΡŒ Π»ΠΈ ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ свойство этих чисСл, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΄Π°Π΅Ρ‚ ΠΈΠΌ прСимущСство Π½Π°Π΄ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ числовыми ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡΠΌΠΈ? Π­Ρ‚ΠΎ пространствСнноС качСство? КакиС Π΅Ρ‰Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ прилоТСния ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ?

каТСтся странно для мСня, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π΅ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ чисСл, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ происходят Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… рСкурсивных Π·Π°Π΄Π°Ρ‡Π°Ρ…, Π½ΠΎ я Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π²ΠΈΠ΄Π΅Π» каталанский ΠΊΡƒΡ‡ΠΈ.

8 ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ²

числа Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ всСвозмоТныС Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅ матСматичСскиС свойства, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅Π»Π°ΡŽΡ‚ ΠΈΡ… ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. Π’ΠΎΡ‚ нСсколько:

Π― ΡƒΠ²Π΅Ρ€Π΅Π½, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ большС ΠΏΡ€ΠΈΡ‡ΠΈΠ½, Ρ‡Π΅ΠΌ просто это, Π½ΠΎ я ΡƒΠ²Π΅Ρ€Π΅Π½, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· этих ΠΏΡ€ΠΈΡ‡ΠΈΠ½ ΡΠ²Π»ΡΡŽΡ‚ΡΡ основными Ρ„Π°ΠΊΡ‚ΠΎΡ€Π°ΠΌΠΈ. НадСюсь, это ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚!

Наибольший ΠžΠ±Ρ‰ΠΈΠΉ Π”Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ магия; см. этой слишком ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ°Π³ΠΈΠΈ. Но Числа Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π»Π΅Π³ΠΊΠΎ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ; Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅. НапримСр, Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½Ρ‹Π΅ числа 1,2,3,4,5 ΠΈΠΌΠ΅ΡŽΡ‚ слишком ΠΌΠ½ΠΎΠ³ΠΎ Π»ΠΎΠ³ΠΈΠΊΠΈ; всС простыС числа находятся Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½ΠΈΡ…; сумма 1..N вычислим, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ. Π½ΠΎ Π½ΠΈΠΊΡ‚ΠΎ ΠΎ Π½ΠΈΡ… Π½Π΅ заботится:)

ΠΎΠ΄Π½Π° ваТная Π²Π΅Ρ‰ΡŒ, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ я Π·Π°Π±Ρ‹Π», это Π—ΠΎΠ»ΠΎΡ‚ΠΎΠΉ ΠŸΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΡƒΡŽ влияниС Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²Π°ΠΌ нравятся ΡˆΠΈΡ€ΠΎΠΊΠΈΠ΅ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€Ρ‹ πŸ™‚

Если Ρƒ вас Π΅ΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ простым ΠΈ ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΌ ΠΌΠ°Π½Π½ΠΎΡ€ΠΎΠΌ с понятными ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ Π² CS ΠΈ nature, ΠΊΠ°ΠΊΠΎΠΉ Π»ΡƒΡ‡ΡˆΠΈΠΉ инструмСнт обучСния ΠΌΠΎΠΆΠ΅Ρ‚ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ?

ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ ΠΏΠΎΠ²ΡΡŽΠ΄Ρƒ Π² ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π΅ ΠΈ ΠΆΠΈΠ·Π½ΠΈ. Они ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ ΠΏΡ€ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ роста популяций ΠΆΠΈΠ²ΠΎΡ‚Π½Ρ‹Ρ…, роста Ρ€Π°ΡΡ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠ»Π΅Ρ‚ΠΎΠΊ, Ρ„ΠΎΡ€ΠΌΡ‹ снСТинок, Ρ„ΠΎΡ€ΠΌΡ‹ растСний, ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ ΠΈ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠΈ. Π― ΡΠ»Ρ‹ΡˆΠ°Π», Ρ‡Ρ‚ΠΎ это Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Π”ΠΠš-ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠΌ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρ‹.

Torrent ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ систСму ΡƒΠ·Π»ΠΎΠ² ΠΈ супСрнодов, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ супСрузСл ΠΈ сколько ΠΏΠΎΠ΄ΡƒΠ·Π»ΠΎΠ² ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ. Они Π΄Π΅Π»Π°ΡŽΡ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡƒΠ·Π»Π°ΠΌΠΈ Π½Π° основС спирали Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ (Π·ΠΎΠ»ΠΎΡ‚ΠΎΠ΅ сСчСниС). Π‘ΠΌ. Ρ„ΠΎΡ‚ΠΎ Π½ΠΈΠΆΠ΅, ΠΊΠ°ΠΊ ΡƒΠ·Π»Ρ‹ Ρ€Π°Π·Π±ΠΈΠ²Π°ΡŽΡ‚ΡΡ / ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ΡΡ (Ρ€Π°Π·Π±ΠΈΠ²Π°ΡŽΡ‚ΡΡ с ΠΎΠ΄Π½ΠΎΠ³ΠΎ большого ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π° Π½Π° мСньшиС ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚). Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Ρ„ΠΎΡ‚ΠΎ: http://smartpei.typepad.com/.a/6a00d83451db7969e20115704556bd970b-pi

Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ явлСния Π² ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π΅

Π― Π½Π΅ Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚, Π½ΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· возмоТностСй Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ опСрация дСлСния мноТСства S Π½Π° Π΄Π²Π° Ρ€Π°Π·Π΄Π΅Π»Π° S1 ΠΈ S2, ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π·Π°Ρ‚Π΅ΠΌ дСлится Π½Π° ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»Ρ‹ S11 ΠΈ S12, ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€, Ρ‡Ρ‚ΠΎ ΠΈ S2,-это вСроятный ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌ ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ числСнно ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ.

ΠΏΠΎΠ·Π²ΠΎΠ»ΡŒΡ‚Π΅ ΠΌΠ½Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Ρƒ структуру Π΄Π°Π½Π½Ρ‹Ρ… ΠΊ вашСй: Π΄Π΅Ρ€Π΅Π²ΡŒΡ Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ. Они интСрСсны Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ вычислСниС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π² Π΄Π΅Ρ€Π΅Π²Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ простым Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… ΡƒΠ·Π»ΠΎΠ²:

Π­Ρ‚ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ связано с обсуТдСниСм templatetypedef Π½Π° AVL-Π΄Π΅Ρ€Π΅Π²ΡŒΡΡ… (Π΄Π΅Ρ€Π΅Π²ΠΎ AVL ΠΌΠΎΠΆΠ΅Ρ‚ Π² Ρ…ΡƒΠ΄ΡˆΠ΅ΠΌ случаС ΠΈΠΌΠ΅Ρ‚ΡŒ структуру Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ). Π― Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΈΠ΄Π΅Π» Π±ΡƒΡ„Π΅Ρ€Ρ‹, Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ Π² ΡˆΠ°Π³Π°Ρ… Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ, Π° Π½Π΅ Π² стСпСнях Π΄Π²ΡƒΡ… Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях.

ΠΈΡ… вычислСниС ΠΊΠ°ΠΊ ΠΌΠΎΡ‰Π½ΠΎΡΡ‚ΡŒ [[0,1], [1,1]] ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΡΠ°ΠΌΡƒΡŽ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… исслСдований (Π²Ρ€ΠΎΠ΄Π΅ ΠΊΠ°ΠΊ Π΄ΠΈΠ»Π΅ΠΌΠΌΠ° Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ-самая примитивная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρ‚Π΅ΠΎΡ€ΠΈΠΈ ΠΈΠ³Ρ€).

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ «Π§ΠΈΡΠ΅Π» Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ» Π² истории ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования

Π‘ Π½Π΅Π΄Π°Π²Π½Π΅Π³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΌΠ½Π΅ Π½Π΅ Π΄Π°ΡŽΡ‚ покоя эти самыС числа Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ! Π‘ ΠΊΠ°ΠΊΠΈΠΌΠΈ Π±Ρ‹ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°ΠΌΠΈ ΠΏΠΎ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ я Π½Π΅ знакомился, я Π²ΡΡŽΠ΄Ρƒ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽ эти числа. Π’ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΎΡ‰ΡƒΡ‰Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ всС ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ связано ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ вычислСний чисСл Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ.

ВычислСниС чисСл Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ приводится Π²ΠΎ мноТСствС ΠΏΠ΅Ρ‡Π°Ρ‚Π½Ρ‹Ρ… ΠΈ элСктронных статСй. Π”Π°ΠΆΠ΅ Wikipedia-ΡΡ‚Π°Ρ‚ΡŒΡ ΠΎ Parallel computing содСрТит ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΡ… вычислСния.

Какой ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π»ΡŽΠ±ΡΡ‚ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Cilk? ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, вычислСниС чисСл Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ. Числа Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Cilk «Parallelism for the Masses». Числа Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² описании Cilkview. ΠŸΡ€ΠΎ Π€ΠΈΠ±ΠΎΠ½Π½Π°Ρ‡ΠΈ ΠΈΠ΄Π΅Ρ‚ Ρ€Π΅Ρ‡ΡŒ Π² «Cilk Reference Manual». ΠŸΡ€ΠΎΡ‰Π΅ говоря, Π²Π΅Π·Π΄Π΅.

Числа Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для дСмонстрации срСдства автоматичСского динамичСского распараллСливания «Π’-систСма», Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ³ΠΎ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΡΡƒΠΏΠ΅Ρ€ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ «Π‘КИЀ» Боюзного государства России ΠΈ БСларуси: » Π’-БистСма с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ».

Π­Ρ‚ΠΎΡ‚ список ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ. Ѐибомания какая-Ρ‚ΠΎ. πŸ™‚ БобствСнно Ρ‚Π°ΠΊΠΎΠ΅ частоС ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ понятно. ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ ΠΈ наглядный ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ распараллСливания, Π½ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ излишнС часто. Π•ΡΡ‚ΡŒ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹, Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ распараллСливаниС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ². Но всС ΠΎΠ½ΠΈ Ρ‡Π°Ρ‰Π΅ всСго ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ матСматичСской Π·Π°Π΄Π°Ρ‡ΠΈ. Π­Ρ‚ΠΎ ΠΏΠ»ΠΎΡ…ΠΎ, ΠΈ я ΠΎΡΡ‚Π°Π½ΠΎΠ²Π»ΡŽΡΡŒ Π½Π° этом ΠΌΠΎΠΌΠ΅Π½Ρ‚Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅.

Роль чисСл Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Ρ… матСматичСских ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² являСтся, ΠΊΠ°ΠΊ Π½ΠΈ странно, Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΎΠΌ Π² истории популяризации ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования. ВсС эти ΡΡ‚Π°Ρ‚ΡŒΠΈ с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ сортировки ΠΈ матСматичСских вычислСний наводят Π½Π° ΠΌΡ‹ΡΠ»ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ это Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΎΡ‚Π΄Π°Π»Π΅Π½Π½ΠΎΠ΅, ΡƒΠ΄Π΅Π» ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΎΠ², Ρ€Π΅ΡˆΠ°ΡŽΡ‰ΠΈΡ… свои спСцифичСскиС Π·Π°Π΄Π°Ρ‡ΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ с числами Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ, вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π»Π΅Π³ΠΊΠΎ ΠΈ эффСктивно ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Ρƒ программиста-ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΈΠΊΠ° ΠΎΡ‰ΡƒΡ‰Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΊ Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌ это Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚. Он мыслит Π½Π΅ Π² матСматичСских Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°Ρ…, Π° Π² Ρ„ΠΎΡ€ΠΌΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с GUI, Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… «Ρ„Π°ΠΉΠ»Ρ‹» ΠΈ «Π·Π΄Π΅ΡΡŒ ΠΌΠ½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ массив». Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρƒ Π½Π΅Π³ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΡŒ Π² ускорСнии ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ комплСкса. Но это Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ связываСтся с ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ Π½Π΅ Π²ΠΈΠ΄ΠΈΡ‚ Π² своСм ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Ρ‚Π΅Ρ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² для распараллСливания, ΠΏΡ€ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΈΡˆΡƒΡ‚ Π² ΡΡ‚Π°Ρ‚ΡŒΡΡ… ΠΈ ΠΊΠ½ΠΈΠ³Π°Ρ….

ΠœΠ½ΠΎΠ³ΠΎΡΠ΄Π΅Ρ€Π½Ρ‹Π΅ систСмы ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ мноТСство ΠΏΡƒΡ‚Π΅ΠΉ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ эффСктивности ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Но Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π° часто смотрит Π½Π° это с ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ распараллСливания ΠΈ измСнСния счСтных Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ². Π₯отя Π΅ΡΡ‚ΡŒ мноТСство Π΄Ρ€ΡƒΠ³ΠΈΡ… ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ распараллСливания. И слСдуСт Π½Π΅ Π·Π°Π±Ρ‹Π²Π°Ρ‚ΡŒ Ρ€Π°ΡΡΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΎ Π½ΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ ΠΈ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹. Один ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ· своСй ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ я ΠΌΠΎΠ³Ρƒ привСсти прямо сСйчас.

Одним ΠΈΠ· этапов развития нашСго инструмСнта PVS-Studio Π±Ρ‹Π»ΠΎ использованиС возмоТностСй многоядСрной систСмы. БтатичСский Π°Π½Π°Π»ΠΈΠ· ΠΊΠΎΠ΄Π° Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ часы, ΠΈ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ являСтся Π²Π°ΠΆΠ½ΠΎΠΉ характСристикой Ρ‚Π°ΠΊΠΈΡ… инструмСнтов.

Π₯ΠΎΡ€ΠΎΡˆΠΎ, Ρ‡Ρ‚ΠΎ распараллСливаниС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² статичСского Π°Π½Π°Π»ΠΈΠ·Π° явилось слоТной Π·Π°Π΄Π°Ρ‡Π΅ΠΉ ΠΈ Π² Ρ…ΠΎΠ΄Π΅ Ρ€Π°Π·ΠΌΡ‹ΡˆΠ»Π΅Π½ΠΈΠΉ ΠΌΡ‹ поднялись Π½Π° Π±ΠΎΠ»Π΅Π΅ высокий ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ абстракции. Нам Π½Π΅Π·Π°Ρ‡Π΅ΠΌ быстро ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ» с исходным ΠΊΠΎΠ΄ΠΎΠΌ. Он обрабатываСтся ΠΈ Ρ‚Π°ΠΊ достаточно быстро. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ мноТСства Ρ„Π°ΠΉΠ»ΠΎΠ². Π’Π°ΠΊ Π±ΡƒΠ΄Π΅ΠΌ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ эти Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ! ΠŸΡ€ΠΎΡΡ‚ΠΎ запустим ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ нСсколько Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠ² (создадим нСсколько процСссов) ΠΈ собСрСм Π²Ρ‹Π΄Π°Π²Π°Π΅ΠΌΡƒΡŽ ΠΈΠΌΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ. НС Π½Π°Π΄ΠΎ OpenMP, Π½Π΅ Π½Π°Π΄ΠΎ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ Π½Π°Π΄ синхронизациями, Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΊΠ°Ρ‚ΡŒ ΡƒΠ·ΠΊΠΈΠ΅ мСста ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ распараллСливания.

ОписанноС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π±Ρ‹Π»ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ ΠΈ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Π’Π°ΠΊΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ каТСтся ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΌ? БСзусловно. НС Π±ΡƒΠ΄Ρƒ Π²Ρ€Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ понадобилось ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠΉΡ‚ΠΈ ΠΊ Π½Π΅ΠΌΡƒ. Но Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… Π·Π°Π΄Π°Ρ‡Π°Ρ… всС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ Ρ‚Π°ΠΊ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ. Π›Π΅Π³ΠΊΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²Π»Π΅Ρ‡ΡŒΡΡ выискиваниСм нСэффСктивных участков Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, ΠΈΡ… распараллСливаниСм, Π·Π°Ρ‚Π΅ΠΌ выявлСниСм Π² Π½ΠΈΡ… ошибок. ΠžΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ Π·Π°Π±Ρ‹Ρ‚ΡŒ Π²Π·Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π½Π° Π·Π°Π΄Π°Ρ‡Ρƒ с Π±ΠΎΠ»Π΅Π΅ высоких ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ. РассмотрСниС ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Ρ‚ΠΈΠΏΠ° Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ ΠΊΠ°ΠΊ Ρ€Π°Π· ΡΠΏΠΎΡΠΎΠ±ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚Π°ΠΊΠΎΠΉ забывчивости. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… систСм Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΌΠ½ΠΎΠ³ΠΎΠ³Ρ€Π°Π½Π½Ρ‹ΠΉ вопрос. Но ΠΎΡΠ²Π΅Ρ‚ΠΈΡ‚ΡŒ эту ΠΌΠ½ΠΎΠ³ΠΎΠ³Ρ€Π°Π½Π½ΠΎΡΡ‚ΡŒ часто нСзаслуТСнно Π·Π°Π±Ρ‹Π²Π°ΡŽΡ‚, ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚Π°Ρ‡ΠΈΠ²Π°ΡΡΡŒ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠ΅ распараллСливания.

Π― клоню ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ пСрСстройки Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ², слСдуСт ΠΏΠΎΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ «ΠΏΡ€ΠΎΡΡ‚ΠΎΠΉ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ». Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случай это просто, ΠΊΠ°ΠΊ Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅. Π­Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ с ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ пСрСкодирования ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΎΠΊ. Π’ Π΄Ρ€ΡƒΠ³ΠΈΡ… систСмах Ρ‚Π°ΠΊΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² для ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ Π±Ρ‹Ρ‚ΡŒ, Π½ΠΎ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ сущности. Π“Π»Π°Π²Π½ΠΎΠ΅ Π½Π΅ Π·Π°Π±Ρ‹Π²Π°Ρ‚ΡŒ Π²Π·Π³Π»ΡΠ½ΡƒΡ‚ΡŒ свСрху.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π£Ρ€ΠΎΠΊ β„–107. РСкурсия ΠΈ Числа Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ

Обновл. 28 Авг 2021 |

На этом ΡƒΡ€ΠΎΠΊΠ΅ ΠΌΡ‹ рассмотрим, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсия Π² языкС C++ ΠΈ Π·Π°Ρ‡Π΅ΠΌ Π΅Ρ‘ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ ΠΈ Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π» Ρ†Π΅Π»ΠΎΠ³ΠΎ числа.

РСкурсия

РСкурсивная функция (ΠΈΠ»ΠΈ просто «рСкурсия») Π² языкС C++ β€” это функция, которая Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ сама сСбя. НапримСр:

На ΡƒΡ€ΠΎΠΊΠ΅ ΠΎ стСкС ΠΈ ΠΊΡƒΡ‡Π΅ Π² Π‘++ ΠΌΡ‹ ΡƒΠ·Π½Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π² стСк Π²Ρ‹Π·ΠΎΠ²ΠΎΠ². ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ функция countOut() Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ (ΠΎΠ½Π° просто снова Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ countOut()), Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π²Ρ‹Ρ‚ΡΠ³ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΈΠ· стСка! Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π² ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΏΠ°ΠΌΡΡ‚ΡŒ стСка закончится ΠΈ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ стСка.

УсловиС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ рСкурсии

РСкурсивныС Π²Ρ‹Π·ΠΎΠ²Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Однако, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, привСдСнная Π²Ρ‹ΡˆΠ΅, ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΠΎΠ΅ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ простых Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΎΡ‚ рСкурсивных: Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ условиС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ рСкурсии, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС β€” функция Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ «бСсконСчно» (фактичСски Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ закончится ΠΏΠ°ΠΌΡΡ‚ΡŒ Π² стСкС Π²Ρ‹Π·ΠΎΠ²ΠΎΠ²).

УсловиС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ рСкурсии β€” это условиС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅, ΠΏΡ€ΠΈ Π΅Π³ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ, остановит Π²Ρ‹Π·ΠΎΠ² рСкурсивной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ самой сСбя. Π’ этом условии ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ if.

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅, Π½ΠΎ ΡƒΠΆΠ΅ с условиСм Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ рСкурсии (ΠΈ Π΅Ρ‰Π΅ с ΠΎΠ΄Π½ΠΈΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ тСкста):

Когда ΠΌΡ‹ запустим эту ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Ρ‚ΠΎ countOut() Π½Π°Ρ‡Π½Π΅Ρ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ:

push 4
push 3
push 2
push 1

Если сСйчас ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° стСк Π²Ρ‹Π·ΠΎΠ²ΠΎΠ², Ρ‚ΠΎ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

countOut(1)
countOut(2)
countOut(3)
countOut(4)
main()

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅:

push 4
push 3
push 2
push 1
pop 1
pop 2
pop 3
pop 4

Π‘Ρ‚ΠΎΠΈΡ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ push выводится Π² порядкС убывания, Π° pop β€” Π² порядкС возрастания. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ push выводится Π΄ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° рСкурсивной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π° pop выполняСтся (выводится) послС Π²Ρ‹Π·ΠΎΠ²Π° рСкурсивной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° всС экзСмпляры countOut() Π²Ρ‹Ρ‚ΡΠ³ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΈΠ· стСка (это происходит Π² порядкС, ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ Ρ‚ΠΎΠΌΡƒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ эти экзСмпляры Π±Ρ‹Π»ΠΈ Π²Π²Π΅Π΄Π΅Π½Ρ‹ Π² стСк).

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ обсудили основной ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Π²Ρ‹Π·ΠΎΠ²Π° рСкурсивных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ взглянСм Π½Π° нСсколько Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚ΠΈΠΏ рСкурсии, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΠΎΠ»Π΅Π΅ распространСн:

Π Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΡŽ с ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ взгляда Π½Π° ΠΊΠΎΠ΄ Π½Π΅ Ρ‚Π°ΠΊ ΡƒΠΆ ΠΈ Π»Π΅Π³ΠΊΠΎ. Π›ΡƒΡ‡ΡˆΠΈΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ рСкурсивной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ. НапримСр, посмотрим, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Π²Ρ‹ΡˆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с value = 4 :

sumCount(4). 4 > 1, поэтому возвращаСтся sumCount(3) + 4
sumCount(3). 3 > 1, поэтому возвращаСтся sumCount(2) + 3
sumCount(2). 2 > 1, поэтому возвращаСтся sumCount(1) + 2
sumCount(1). 1 = 1, поэтому возвращаСтся 1. Π­Ρ‚ΠΎ условиС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ рСкурсии

Π’Π΅ΠΏΠ΅Ρ€ΡŒ посмотрим Π½Π° стСк Π²Ρ‹Π·ΠΎΠ²ΠΎΠ²:

sumCount(1) Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ 1
sumCount(2) Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ sumCount(1) + 2, Ρ‚.Π΅. 1 + 2 = 3
sumCount(3) Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ sumCount(2) + 3, Ρ‚.Π΅. 3 + 3 = 6
sumCount(4) Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ sumCount(3) + 4, Ρ‚.Π΅. 6 + 4 = 10

На этом этапС ΡƒΠΆΠ΅ Π»Π΅Π³Ρ‡Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ просто добавляСм числа ΠΌΠ΅ΠΆΠ΄Ρƒ 1 ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ прСдоставил caller. На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ рСкомСндуСтся ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π²ΠΎΠ·Π»Π΅ рСкурсивных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π΄Π°Π±Ρ‹ ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ΡŒ Тизнь Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ сСбС, Π½ΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ людям, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ваш ΠΊΠΎΠ΄.

РСкурсивныС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹

Числа Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ

Одним ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ извСстных матСматичСских рСкурсивных Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² являСтся ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ. ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π΄Π°ΠΆΠ΅ Π² ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π΅: Π²Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π΅Ρ€Π΅Π²ΡŒΠ΅Π², ΡΠΏΠΈΡ€Π°Π»ΡŒ Ρ€Π°ΠΊΡƒΡˆΠ΅ΠΊ, ΠΏΠ»ΠΎΠ΄Ρ‹ ананаса, Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉΡΡ ΠΏΠ°ΠΏΠΎΡ€ΠΎΡ‚Π½ΠΈΠΊ ΠΈ Ρ‚.Π΄.

Π‘ΠΏΠΈΡ€Π°Π»ΡŒ Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ числа Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ числа Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ числа Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ числа Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ числа Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

КаТдоС ΠΈΠ· чисСл Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ β€” это Π΄Π»ΠΈΠ½Π° Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ стороны ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ находится Π΄Π°Π½Π½ΠΎΠ΅ число. ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΈ числа Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

F(n) = 0, Ссли n = 0
1, Ссли n = 1
f(n-1) + f(n-2), Ссли n > 1

Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, довольно просто Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΠ²Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для вычислСния n-Π³ΠΎ числа Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *