c++中斐波那契数列
请问如何在c++中输出斐波那契数列的第17项(在c++中求斐波那契数列的思路)?注:我刚初一,太复杂我无法看懂。开头:#include<iostream>usingnam...
请问如何在c++中输出斐波那契数列的第17项(在c++中求斐波那契数列的思路)?
注:我刚初一,太复杂我无法看懂。
开头:#include<iostream>
using namespace std;
int main()
{
结尾:system("pause");
return 0;
} 展开
注:我刚初一,太复杂我无法看懂。
开头:#include<iostream>
using namespace std;
int main()
{
结尾:system("pause");
return 0;
} 展开
5个回答
展开全部
我写了一个,可以运行的了。你参考参考吧~~~
#include "stdafx.h";
int _tmain(int argc, _TCHAR* argv[])
{
int a[3];
a[0]=1;a[1]=1;
a[2]=a[0]+a[1];
int i,n;
printf("请输入要求的斐波那契数列的第n项\n");
printf("n:");
scanf("%d",&n);
printf("\n");
for(i=3;i<=n;i++) /*此处的n即为所求的斐波那契数列的第n项,可以用户自己输入,也可以编程时指定*/
{
a[2]=a[0]+a[1]; /*算法的思想就是一个递归求解,你自己逐步分析即可明白*/
a[0]=a[1];
a[1]=a[2];
}
printf("第%d项斐波那契数列的数字为:",n);
printf("%d",a[2]);
scanf("%d",&i);
return 0;
}
追问
谢谢,但是运行不了·······
还有,你算成18项了
楼上的对了
展开全部
斐波那契数列每一项都是前两项和,所以利用递推公式f(n)=f(n-1)+f(n-2),f(1)=f(2)=1
核心部分是
int i,fn,f1,f2;
f1=f2=1;
for(i=2;i<17;i++){
f2=f1;
f1=fn;
fn=f1+f2;
}
核心部分是
int i,fn,f1,f2;
f1=f2=1;
for(i=2;i<17;i++){
f2=f1;
f1=fn;
fn=f1+f2;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
数组懂得吧,楼上的数组都压着用,表示内存感觉不出这么点的,反而低了效率 #define MAX 100 unsigned long a[MAX]={1,1}; int n; cin>>n; for(int i=2;i!=n;++i) { a[i]=a[i-1]+a[i-2]; } cout<<a[n-1]<<endl;
追问
········
不懂
我只知道循环输入输出if··········
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int a[17];
a[0]=1;
a[1]=1;
for(int i=2; i < 17; i++)a[i]=a[i-1]+a[i-2];
cout<<a[16];
a[0]=1;
a[1]=1;
for(int i=2; i < 17; i++)a[i]=a[i-1]+a[i-2];
cout<<a[16];
追问
······
谢谢,但是——————
算成18项了
我把【17】-1
【16】-1
就可以了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <cstdio>
#include<cstdlib>
int main()
{
int n,a[48],b,c,d;
a[0]=0;a[1]=1;
scanf("%d",&n);
if (n>=3)
{printf("%15d%15d",a[0],a[1]);
for (b=2;b<n;b++)
{a[b]=a[b-1]+a[b-2];printf("%15d",a[b]);
if (b%4==3) printf("\n");}}
else {if (n==1) printf("%15d",a[0]);
if (n==2) printf("%15d%15d",a[0],a[1]);}
printf("\n");
system("pause");
return 0;
}
#include<cstdlib>
int main()
{
int n,a[48],b,c,d;
a[0]=0;a[1]=1;
scanf("%d",&n);
if (n>=3)
{printf("%15d%15d",a[0],a[1]);
for (b=2;b<n;b++)
{a[b]=a[b-1]+a[b-2];printf("%15d",a[b]);
if (b%4==3) printf("\n");}}
else {if (n==1) printf("%15d",a[0]);
if (n==2) printf("%15d%15d",a[0],a[1]);}
printf("\n");
system("pause");
return 0;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询