新知识
例1.输出斐波那契数列前十个数字
运行程序,依次输出1,1,2,3,5,8,13,21,34,55
(1)题目分析
分析斐波那契数列的规律。第1、2个数字都是1。第3个数字开始,每个数字等于前两位数字之和。
(2)流程图
flowchart LR
A(开始程序)-->B[a1=1,a2=1,i=0]
B-->C[/输出a1,a2值/]
C-->D{i<8}
D-- Yes -->E[/输出a1+a2/]
E-->F[t=a1,a1=a2,a2=t+a2,i+=1]
F-->D
D-- No -->G(结束程序)
(3)源代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a1=1,a2=1,i=0;
cout<<a1<<","<<a2;
while(i<8){
cout<<","<<(a1+a2);
int t=a1; a1=a2; a2=t+a2;
i+=1;
}
return 0;
}
例2.检索斐波那契数列上的数字
编写程序,输入数字3,输出数字2;输入数字6,输出数字8。
(1)题目分析
例1已经可计算指定数位的斐波那契数列。我们只需要把例1封装成一个求斐波那契数列的函数就可以解决问题。
(2)源代码
#include<bits/stdc++.h>
using namespace std;
int fib(int n)
{
int a1=1,a2=1,i=0;
if(n==1 || n==2)
return 1;
while(i<(n-2)){
int t=a1; a1=a2; a2=t+a2;
i+=1;
}
return a2;
}
int main()
{
int c;
cin>>c;
cout<<fib(c);
return 0;
}
思考:比较例1和例2两个程序,请画出例2的流程图。