本帖最后由 熊猫拍板砖 于 2023-8-18 22:41 编辑
思路一:递归,最简单,解决难点是n过大,用全局数组或者map来维护一个已经查询过的 斐波那契数列
思路二:遍历,顺序的遍历下去也是可以的
跑了一下你的代码,你把 e==5 改成 e%5==0
如果你e== 5,如果我输入超过10,那么你的斐波那契数列就只有两行
我的代码
#include "stdio.h"
int main(void) {
int n, f1 = 0, f2 = 1, f3 = 0,i=1;
printf("输入需要的位数:");
scanf("%d", &n);
if (n>0 && n<=30)
{
printf("%10d",f1);
i++;
if (n>=2)
{
printf("%10d",f2);
i++;
}
for(;i<=n;i++)
{
f3=f1+f2;
f1=f2;
f2=f3;
if (i%5==0)
printf("%10d\n",f2);
else
printf("%10d",f3);
}
}
return 0;
}
#include "iostream"
#include "iomanip"
using namespace std;
int main() {
int n, f1 = 0, f2 = 1, f3 = 0,i=1;
cout<<"输入需要的位数:";
cin>>n;
if (n>0 && n<=30)
{
cout<<setw(10)<<f1;
i++;
if (n>=2)
{
cout<<setw(10)<<f2;
i++;
}
for(;i<=n;i++)
{
f3=f1+f2;
f1=f2;
f2=f3;
(i%5==0)?(cout<<setw(10)<<f2<<endl):(cout<<setw(10)<<f3);
}
}
return 0;
}
|