ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² ΡƒΡ‡Ρ‘Π±Π΅, ΠΎΡ‡Π΅Π½ΡŒ быстро...
Π Π°Π±ΠΎΡ‚Π°Π΅ΠΌ вмСстС Π΄ΠΎ ΠΏΠΎΠ±Π΅Π΄Ρ‹

РСкурсия с Π²Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠ΅ΠΌ

Π Π΅Ρ„Π΅Ρ€Π°Ρ‚ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Π”ΠΎ ΡΠΈΡ… ΠΏΠΎΡ€ ΠΌΡ‹ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Π»ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ рСкурсивных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ экзСмпляр ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π΄Π΅Π»Π°Π» Π½Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ рСкурсивного Π²Ρ‹Π·ΠΎΠ²Π°. Однако Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈ Π±ΠΎΠ»ΡŒΡˆΠ΅. РСкурсия, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ сСбя нСсколько Ρ€Π°Π·, называСтся вСтвящСйся (ΠΈΠ»ΠΈ рСкурсиСй с Π²Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠ΅ΠΌ). ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ вСтвящСйся рСкурсии являСтся рСкурсивный ΠΌΠ΅Ρ‚ΠΎΠ΄ вычислСния чисСл Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ. Рассмотрим Π΅Π³ΠΎ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

РСкурсия с Π²Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠ΅ΠΌ (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Π”ΠΎ ΡΠΈΡ… ΠΏΠΎΡ€ ΠΌΡ‹ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Π»ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ рСкурсивных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ экзСмпляр ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π΄Π΅Π»Π°Π» Π½Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ рСкурсивного Π²Ρ‹Π·ΠΎΠ²Π°. Однако Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈ Π±ΠΎΠ»ΡŒΡˆΠ΅. РСкурсия, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ сСбя нСсколько Ρ€Π°Π·, называСтся вСтвящСйся (ΠΈΠ»ΠΈ рСкурсиСй с Π²Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠ΅ΠΌ). ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ вСтвящСйся рСкурсии являСтся рСкурсивный ΠΌΠ΅Ρ‚ΠΎΠ΄ вычислСния чисСл Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ. Рассмотрим Π΅Π³ΠΎ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅.

Π—Π°Π΄Π°Ρ‡Π° 6.2 ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ рСкурсивный ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ вычисляСт n-Ρ‹ΠΉ Ρ‡Π»Π΅Π½ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ чисСл Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ.

ОбъяснСниС: матСматичСски ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊ:

Π’ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π²Π° условия Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ рСкурсии: ΠΏΡ€ΠΈ ΠΈ ΠΈ Π΄Π²Π° рСкурсивных Π²Ρ‹Π·ΠΎΠ²Π° ΠΈ .

import java.util.Scanner;

public class FibR.

{.

static long fib (int n) {.

return (n>1)?fib (n-1)+fib (n-2):(n==1)?1:0;

}.

public static void main (String[] args).

{.

Scanner scan=new Scanner (System.in);

System.out.printf («Π’Π²Π΅Π΄ΠΈΡ‚Π΅ n:»);

int n = scan. nextInt ();

System.out.printf («fib (%d)= %d», n, fib (n));

}.

}.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

Π’Π²Π΅Π΄ΠΈΡ‚Π΅ n:5.

fib (5)= 5.

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

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ