#include<iostream>
using namespace std;
void pr(int n);
int main(){
pr(100);
pr(1000);
pr(10000);
return 0;
}
void pr(int n){
if(n==1) cout<<"0"<<endl;
if(n==2) cout<<"1"<<endl;
if(n==3) cout<<"2"<<endl; // S1=1 S2=2 S3=5
if(n==4) cout<<"2"<<endl;
if(n==5) cout<<"2"<<endl;
int a1=1,a2=1,a3,sum=2;
for(int i=3;sum<n;i++){
a3=a1+a2*2;
sum+=a3; //sum循环内第一次赋值为5,所以前面五种情况要单独列出来
a1=a2; //记得千万不能漏掉这个,递归(迭代)
a2=a3;
if(sum<n&&sum+a1+a2*2>=n) cout<<i<<endl;
}
}
【C++ 递归递归递归-迭代迭代迭代】
于 2022-03-28 19:44:45 首次发布