这个是C++用子函数和不用子函数实现斐波那契数列即Fibonacci数列,想问一下整个程序流程图怎么画,我只会单独斐波那契数列的画法
#include "stdafx.h"
#include<iomanip>
#include<iostream>
using namespace std;
void Fun2(int number, int* b)
{
b[0] = 1;
b[1] = 2;
for (int i = 2; i <= number; i++)
{
b[i] = b[i - 1] + b[i - 2];
}
}
int _tmain(int argc, _TCHAR* argv[])
{
cout << "一对兔子开始繁殖,以后各月的兔子对数:" << endl;
int a[10000]={1},i;
a[0]=1;
a[1]=2;
for( i=2;i<=11;i++){
a[i]=a[i-1]+a[i-2];
}
cout << "不用子函数计算结果:" << endl;
for( i=0;i<=11;i++){
cout<< a[i] << " ";
}
cout << endl;
int b[10000] = {1};
Fun2(11, b);
cout << "用子函数计算结果:" << endl;
for (int i = 0; i <= 11; i++)
{
cout <<b[i] << " ";
}
return 0;
}
流程图如下,如有帮助,望采纳,多谢。
开始 -> 输出提示信息 -> 初始化数组a -> 计算数组a的值 -> 输出数组a的值 -> 初始化数组b -> 调用函数Fun2计算数组b的值 -> 输出数组b的值 -> 结束
1, 1,2,3, 5,8,13,21, 34,55,...
即函数第n位上的数始终是第n-1和n-2位置上的数的和,第1位和第2位为1
求Fibonacci数列第n位上的值
迭代实现
#include<iostream>
using namespace std;
int Fibo_Iter(const int n) {
if (1 == n || 2 == n)
return 1;
int n1 = 1, n2 = 1, n3;
for (int i = 3; i <= n; ++i) {
n3 = n1 + n2;
n1 = n2;
n2 = n3;
}
return n2;
}
int main()
{
for (int i = 1; i != 10; ++i)
cout << Fibo_Iter(i) << " ";
return 0;
}
输出为
递归实现
#include<iostream>
using namespace std;
int Fibo_Recur(const int n) {
if (1 == n || 2 == n)
return 1;
return Fibo_Recur(n - 1) + Fibo_Recur(n - 2);
}
int main()
{
for (int i = 1; i != 10; ++i)
cout << Fibo_Iter(i) << " ";
return 0;
}
输出结果与迭代结果一致