fibonacci . , , . - " ", , . , n- . :
public static int fib_r (int a, int b, int n) {
if (n == 1) return a;
if (n == 2) return b;
return fib_r(b, a+b, n-1);
}
public static int fib (int n) {
return fib_r(0, 1, (n > 0) ? n : 1);
}
:
public static int sumfib_r (int a, int b, int n) {
if (n == 1) return a;
if (n == 2) return b;
return sumfib_r(b, a+b+1, n-1);
}
public static int sumfib (int n) {
return sumfib_r(0, 1, (n > 0) ? n : 1);
}
/ .
:
, , 1. - , ,
, , SO. , , . , . . F[i] - i- , S[n] - < n, :
S[n] = F[n+2] - 1
, , S[n+2],
S[n+2] = S[n+1] + F[n+2]
, S[n] + 1 F[n+2]:
S[n+2] = S[n+1] + S[n] + 1
, " 1 " fibonacci.
, , . F fibonacci, S " 1 " fibonacci.
F[1] = 0
F[2] = 1
F[i] = F[i-1] + F[i-2] for i > 1
S[1] = 0
S[2] = 1
S[i] = S[i-1] + S[i-2] + 1 for i > 1
, k > 0:
k
.---
S[k] = > F[i]
`---
i = 1
, , :
S[1] = F[1]
S[k] = F[k] + S[k-1] for k > 1
. .
S[1] = F[1] = 0
S[2] = F[2] + F[1] = 1
S[3] = S[2] + S[1] + 1 = F[3] + F[2] + F[1] = 2
: , k > 2, S[j+1] = F[j+1] + S[j] 0 < j < k+1 , , j = k+1, : S[k+2] = F[k+2] + S[k+1].
S[k+2] = S[k+1] + S[k] + 1
=> S[k+2] = (F[k+1] + S[k]) + (F[k] + S[k-1]) + 1
=> S[k+2] = (F[k+1] + F[k]) + (S[k] + S[k-1] + 1)
=> S[k+2] = F[k+2] + S[k+1]
.