Bu məsələdə -ci Fibonacci ədədini tapmaq tələb olunur. n \le 40 olduqda rekursiv həll vaxtı ötmədən çalışacaq. Fibonacci ardıcıllığı belə görünür:
-də saxlanıla biləcək ən böyük Fibonacci ədədi
n \le 40 olduqda verilənlər tipindən istifadə etmək kifayətdir.
Fərz edək ki, fib(n) funksiyası -ci Fibonacci ədədini hesablayır. Onda belə bir rekursiv tənlik ortaya çıxır:
Alqoritmin realizasiyası
fib funksiyası -ci Fibonacci ədədini hesablayır.
int fib(int n)
{
if (n == 0) return 0;
if (n == 1) return 1;
return fib(n - 1) + fib(n - 2);
}Proqramın əsas hissəsi. dəyərini oxuyuruq, hesablayırıq və çıxış edir.
scanf("%d", &n);
printf("%d\n", fib(n));Java realizasiyası
import java.util.*;
public class Main
{
static int f(int n)
{
if (n == 0) return 0;
if (n == 1) return 1;
return f(n-1) + f(n - 2);
}
public static void main(String[] args)
{
Scanner con = new Scanner(System.in);
int n = con.nextInt();
System.out.println(f(n));
con.close();
}
}Python realizasiyası — memoizasiya
fib funksiyası -ci Fibonacci ədədini hesablayır.
def fib(n):
if dp[n] != -1:
return dp[n]
dp[n] = fib(n - 1) + fib(n - 2)
return dp[n]Proqramın əsas hissəsi. Giriş dəyəri oxuyuruq.
n = int(input())siyahısını başlayırıq.
dp = (n + 1) * [-1]
dp[0] = 0
dp[1] = 1Cavabı hesablayırıq və çıxış edirik.
print(fib(n))Python realizasiyası — memoizasiya 2
arr = {}fib funksiyası -ci Fibonacci ədədini hesablayır.
def fib(n):
if (n == 0): return 0
if (n == 1): return 1
if n not in arr:
arr[n] = fib(n - 1) + fib(n - 2)
return arr[n]Proqramın əsas hissəsi. dəyərini oxuyuruq, hesablayırıq və çıxış edirik.
n = int(input())
print(fib(n))Python realizasiyası — memoizasiya 3
arr = {0:0, 1:1}fib funksiyası -ci Fibonacci ədədini hesablayır.
def fib(n):
if arr.get(n) is None:
arr[n] = fib(n - 1) + fib(n - 2)
return arr[n]Proqramın əsas hissəsi. dəyərini oxuyuruq və -ni çıxış edirik.
n = int(input())
print(fib(n))Python realizasiyası — TLE
fib funksiyası -ci Fibonacci ədədini hesablayır.
def fib(n):
if (n == 0): return 0
if (n == 1): return 1
return fib(n - 1) + fib(n - 2)Proqramın əsas hissəsi. dəyərini oxuyuruq, hesablayırıq və çıxış edirik.
n = int(input())
print(fib(n))