康佳液晶电视报价:简单的一个C++问题

来源:百度文库 编辑:高考问答 时间:2024/05/09 19:22:18
//输出斐波那契数的第n项
#include<iostream.h>
int feibona(int n);
int cinn();
void main()
{ int temp,n;
n=cinn();
temp=feibona(n);
cout<<temp<<endl;
}
int cinn()
{ int n;
cout<<"Iput n:\n";
cin>>n;
return n;
}
int feibona(int n)
{
if(n==1)
return 1;
else if(n>1)
return feibona(n-1)+feibona(n-2);
}

请问这个程序错在哪?正确的程序是什么?谢谢
编译能通过,就是输出不正确(输入6,输出4;输入9输出-858993442

#include<iostream.h>
int feibona(int n);
int cinn();
void main()
{ int temp=0,n=0;
n=cinn();
temp=feibona(n);
cout<<temp<<endl;
}
int cinn()
{ int n;
cout<<"Iput n:\n";
cin>>n;
return n;
}
int feibona(int n)
{
if(n==1 || n==2) //往下看
return 1;
else if(n>2) //错误在这里,这个数列的前两个都是1,所以不能只判断第一个。
return feibona(n-1)+feibona(n-2);
}

给你改完了,调试通过,结果正确

错误信息是什么?