发布网友 发布时间:2022-04-22 19:57
共5个回答
热心网友 时间:2023-11-05 12:44
利用特征方程的办法(这个请自行参阅组合数学相关的书)。
设斐波那契数列的通项为an。
(事实上an
=
(p^n
-
q^n)/√5,其中p
=
(√5
-
1)/2,
q
=
(√5
+
1)/2。但这里不必解它)
然后记
sn
=
a1
+
a2
+
...
+
an
由于
an
=
sn
-
s(n-1)
=
a(n-1)
+
a(n-2)
=
s(n-1)
-
s(n-2)
+
s(n-2)
-
s(n-3)
=
s(n-1)
-
s(n-3)
其中初值为s1
=
1,
s2
=
2,
s3
=
4。
所以
sn
-
2s(n-1)
+
s(n-3)
=
0
从而其特征方程是
x^3
-
2x^2
+
1
=
0
即
(x
-
1)(x^2
-
x
-
1)
=
0
不难解这个三次方程得
x1
=
1
x2
=
p
x3
=
q
(p,
q值同an中的p,
q)。
所以通解是
sn
=
c1
*
x1^n
+
c2
*
x2^n
+
c3
*
x3^n
其中c1,c2,c3的值由s1,s2,s3的三个初值代入上式确定。我就不算了。
热心网友 时间:2023-11-05 12:45
斐波那契数列的特点就是An-1+An=An+1
如果知道二阶特征根方程的按从高到低的次序排列X^2-X-1=0(移过项了)
解得的根1与根2带入含参表达式:an=C1(根1)^n+C2(根2)^n
C1 C2 为两常数,带入a1 a2 即可解得C1 C2
热心网友 时间:2023-11-05 12:45
1
//
Fig.
6.30:
fig06_30.cpp
2
//
Testing
the
recursive
fibonacci
function.
3
#include
<iostream>
4
using
std::cout;
5
using
std::cin;
6
using
std::endl;
7
8
unsigned
long
fibonacci(
unsigned
long
);
//
function
prototype
9
10
int
main()
11
{
12
//
calculate
the
fibonacci
values
of
0
through
10
13
for
(
int
counter
=
0;
counter
<=
10;
counter++
)
14
cout
<<
"fibonacci(
"
<<
counter
<<
"
)
=
"
15
<<
fibonacci(
counter
)
<<
endl;
16
17
//
display
higher
fibonacci
values
18
cout
<<
"fibonacci(
20
)
=
"
<<
fibonacci(
20
)
<<
endl;
19
cout
<<
"fibonacci(
30
)
=
"
<<
fibonacci(
30
)
<<
endl;
20
cout
<<
"fibonacci(
35
)
=
"
<<
fibonacci(
35
)
<<
endl;
21
return
0;
//
indicates
successful
termination
22
}
//
end
main
23
24
//
recursive
method
fibonacci
25
unsigned
long
fibonacci(
unsigned
long
number
)
26
{
27
if
(
(
number
==
0
)
||
(
number
==
1
)
)
//
base
cases
28
return
number;
29
else
//
recursion
step
30
return
fibonacci(
number
-
1
)
+
fibonacci(
number
-
2
);
31
}
//
end
function
fibonacci
热心网友 时间:2023-11-05 12:46
http://ke.baidu.com/view/816.htm
这里有的
热心网友 时间:2023-11-05 12:46
你知道特征方程吗,
就是用它来求得