/*
题目:定义Fibonacci 数列如下:
/ 0 n=0
f(n)= 1 n=1,2
\ f(n-1)+f(n-2) n>2
输入n,用最快的方法求该数列的第n 项。
*/
思想 :用两个数分别循环记录和,f1记录n为奇数时,f2记录n为偶数时。用i标记,每次记录两个和。这样比较快。
#include <iostream>
using namespace std;
int main()
{
int f1=1;
int f2=1;
int n;
int i=1;
cout<<"输入要输出的n"<<endl;
cin>>n;
while(2*i<n) //循环控制条件要注意
{
f1=f1+f2; //f1记录n为奇数
f2=f1+f2; //f2记录n为偶数,n必为其中之一的值
cout<<i;
i=i++;
}
cout<<endl;
if(n%2 == 0)
cout<<f2<<endl;
else
cout<<f1<<endl;
return 0;
}
采用递归的方法,代码是很简单的。但是复杂度较高。
采用递归,要注意函数返回条件。一定要return结束。