第50课 大自然的神奇数列
大自然的神奇数列(斐波那契数列的正与反)
大自然的神奇让我们惊叹不已。它不仅展现了山川河流的奇妙,还赋予树木花果以数学之美。你是否留意过花朵花瓣的数量吗?白掌有1片花瓣,虎刺梅有2片花瓣,兰花有3片花瓣,桃花有5片花瓣,格桑花有8片花瓣,而雏菊花瓣的数量更有意思,它可以是13、21、34、55、89片等。
树枝的一层一层的数量,向日葵的螺旋数目等,都遵循一个数列的规律—斐波那契数列。
斐波那契数列是由数学家列昂纳多·斐波那契定义的,这个数列从第3项开始,每一项都等于前两项之和。例如:0,1,1,2,3,5,8,13,21,34,55,89,144,233…
斐波那契数列
按照斐波那契数列的规则,我们编写一个程序来找出数列的第几项是什么数字。
假设输入的项数是num:
(1)数列的第一项是0,那么当查找第一项时,应该输出0。
if(num==1){
cout<<0;}
(2)数列的第二项是1,那么当查找第二项时,应该输出1。
if(num==2){
cout<<1;}

(3)这个数列从第3项开始,每一项都等于前两项之和。
从第三项开始,设置一个for循环从3开始。
for(int i=3;)
由于数列的规则是后一项的数字等于前两项的数字之和,因此我们需要一步一步地推算到第num项。循环从3开始直到num。
for(int i=3;i<=num;i++)
第一次循环求出的是第三项,它的值=0+1。
为了可以循环进行,声明两个变量a=0,b=1,作为第一项和第二项。
计算第三项为int temp=a + b。
继续往下计算,a和b的值需要向后移动。
a的后一项是b,使得a=b,把b赋值给a。
b的后一项是新计算的temp,使得b=temp,把temp赋值给b。


运行程序:
查找斐波那契数列的第几项:12
敲黑板
特殊情况记得要单独处理,别漏了!
数列依次向后计算,前一位和前两位的数字要记得更替!
a=b;
b=temp;

推算第几项的数字,从数字反查是第几项,可谓一正一反。
反向查找
其实呀,我们可以逐一匹配。

运行程序:
查找是第几项:144

按照斐波那契数列的计算规则,逐一排查,发现与输入数字相等的数字时,直接输出并跳出循环。
巩固练习
(1)下面的C++代码片段的输出是什么?()
int a=1, b=1, c;
for(int i=1; i<=5; i++){
c=a + b; a=b; b=c;}
cout<<a;
A.4
B.5
C.6
D.8
(2)找出数列3 6 9 12 15 18 21 24 27 30…的规律,并编写程序输出数列前100项的值,用空格隔开。
示例:
(3)找出数列2 5 10 17 26 37 50 65 82…的规律,并编写程序输出数列前100项的值,用空格隔开。
示例:

