斐波那契

什么是斐波那契?

像如下这样的数列:1,1,2,3,5,8,13,21,34,55……

从第三项开始,每一项都等于前两项之和。

斐波那契数列是前两个数的和等于第三个数(依次类推)所以我们需要来创建三个变量来代表前两个数和第三个数,用后一个数赋值给前一个数的方式实现将数字一个一个想后推移

方法一

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
int main()
{
int a = 1;
int b = 1;
int c;
int i = 0;
int n = 0;
scanf("%d", &n); // 第几项
for (i = 3; i <= n; i++)
{
c = a + b;
a = b;
b = c;
}
printf("%d", b);
return 0;
}

-------------------------------

int main()
{
int a = 1, b = 1, c = 0;
for (int i = 1; i <= 40; i++)
{
printf("%12d\n", a);
c = a + b;
a = b;
b = c;
}
return 0;
}

方法二

每次输出两项

1
2
3
4
5
6
7
8
9
10
11
int main()
{
int a = 1, b = 1, c = 0;
for (int i = 1; i <= 20; i++)
{
printf("%14d\n%14d\n", a, b);
a = a + b;
b = a + b;
}
return 0;
}

方法三【递归】

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int fib(int x);
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
printf("%d ", fib(i));
}

return 0;
}
int fib(int x)
{
if (x <= 2)
{
return 1;
}
else
{
return fib(x - 1) + fib(x - 2);
}
}