public class fibonacci {
public static int count=0;
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int i = scan.nextInt();
System.out.println("value of i ="+ i);
int result = fun(i);
System.out.println("final result is " +result);
}
public static int fun(int i) {
count++;
System.out.println("fun is called and count is "+count);
if(i < 2) {
System.out.println("function returned");
return 1;
}
int k = i/2;
int part1 = fun(k);
int part2 = fun(i-k);
int part3 = fun(k-1);
int part4 = fun(i-k-1);
return ((part1*part2) + (part3*part4));
}
}
, java. , O (N ^ 2), . - O (N ^ 2), , (, ) .
,
fun (int i) .
OUTPUT

, , , , O (N ^ 2), O (LogN).
, .
T (N) = 4 * T (N/2) + O (1)
O (1) - .
.
T(n) = aT(n/b) + f(n) where a >= 1 and b > 1
:
- f (n) = Θ (nc), c < Logba T (n) = Θ (nLogba)
- f (n) = Θ (nc), c = Logba, T (n) = Θ (ncLog n)
- f (n) = Θ (nc), c > Logba, T (n) = Θ (f (n))
a = 4, b = 2 c = 0.
1 c < logba => 0 < 2 ( 2 2),
, T(n) = O(n^2).
, -, :