#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
int i;
int n=0;
int F[10];
F[0]=0;
F[1]=1;
cin>>n;
for(i=2; i<n+1; ++i)
{
F[i]=(F[i-1])+F[i-2];
cout <<F[i]<<endl;
}
getch();
return 0;
}
现在这是一种斐波那契数字生成器,但它输出了斐波那契数列中的所有先前数字。我想要它打印最后一个。例如,如果输入为8,我希望它输出“21”而不是1 2 3 5 8 13 21。
答案 0 :(得分:0)
#include <iostream>
#include <conio.h>
int main()
{
int F[10];
F[0] = 0;
F[1] = 1;
int n = 0;
cin >> n;
for (int i = 2; i <= n; ++i)
{
F[i] = F[i-1] + F[i-2];
}
std::cout << F[n] << std::endl;
getch();
}
由于您已经知道最后一个元素(n
)的索引,因此您可以在循环后打印它。我还做了一些没有改变程序功能的清理工作。
请注意,该程序最初仍假定n
小于10.
答案 1 :(得分:0)
只存储最后两个值:
#include <iostream>
using namespace std;
int main()
{
int F[2] = { 1, 1 };
int n = 0;
cin>>n;
for(int i=2; i<n; ++i)
{
swap( F[0], F[1] );
F[1] += F[0];
}
std::cout << F[1] << std::endl;
return 0;
}