题目链接:
解题思路:
假设 1 的前面有一个 0;
创建俩个变量用来存储当前位置的数(cur)与前一个位置的数(front);
再创建一个变量用来求 cur +front 的和
然后更新 cur 与 front 的值
参考代码:
#include<bits/stdc++.h>
using namespace std;
int main( )
{
int data = 0;
cin >> data;
int sum = 1;
int cur= 1,front = 0;//初始值不能随意改动
for(int i = 0;i < data;i++)
{
//int front = i;不能放在循环内部
//sum = front + cur;
cout << sum << " ";
sum = front + cur;
/*将该行代码放在 cout 的后面就是为了一开始输出俩个 1*/
front = cur;//下面俩行代码的顺序不能颠倒
cur = sum;
}
return 0;
}
变式题一:
参考代码:
#include<bits/stdc++.h>
using namespace std;
int main( )
{
int data = 0;
cin >> data;
int sum = 1;
int cur= 1,front = 0;
for(int i = 0;;i++)
{
//cout << sum << " ";
if(sum == data)
{
cout << "YES" << endl;
break;
}
else
{
if(sum > data)
{
cout << "NO" << endl;
break;
}
}
sum = front + cur;
front = cur;//下面俩行代码的顺序不能颠倒
cur = sum;
}
return 0;
}
变式题二:
解题思路:
经过观察可知:
其分子,分母均是斐波那契数
参考代码:
#include<bits/stdc++.h>
using namespace std;
int main( )
{
int front = 0,cur = 1;
int sum = 0;
float end = 0;
int son = 0,mother = 0;
for(int i = 0;i < 20;i++)
{
sum = front + cur;
//cout << sum << " ";
mother = sum; //分母
front = cur;
cur = sum;
son = front + cur;//分子
end = end + ((float)son / mother);
}
printf("%.2f",end);
return 0;
}