思路一:递归
#include <iostream> using namespace std; int getsum(int n){ if(n==1||n==2) return 1; return getsum(n-1)+getsum(n-2); } int main() { int n; cin>>n; cout<<getsum(n); } // 64 位输出请用 printf("%lld")思路二:迭代
#include<iostream> using namespace std; int main(){ int n; while(cin >> n){ //每次输入n if(n <= 2) //前两个月直接输出 cout << 1 << endl; else{ int dpi_2 = 1; //初始化第1个月 int dpi_1 = 1; //初始化第2个月 int output = 0; for(int i = 3; i <= n; i++){ output = dpi_1 + dpi_2; //公式相加 dpi_2 = dpi_1; //变量更新 dpi_1 = output; } cout << output << endl; } } return 0; }