#include<iostream>
#include<cstdio>
using namespace std;
int num;
int algorithm(int n){
if(n==1)
return 1;
else if(n%2==1){
n=3*n+1;
num=algorithm(n)+1;
}
else if(n%2==0){
n=n/2;
num=algorithm(n)+1;
}
return num;
}
int main(){
int n,m,max,result,kase;
while(scanf("%d%d",&n,&m)!=EOF){
kase=0,max=0;
if(n>m){
int temp=n;
n=m;
m=temp;
kase=1;
}
for(int i=n;i<=m;i++){
num=0;
result=algorithm(i);
if(result>max)
max=result;
}
if(kase==1)
cout<<m<<" "<<n<<" "<<max<<endl;
else
cout<<n<<" "<<m<<" "<<max<<endl;
}
return 0;
}
这道题用循环也可以弄出来,但我想尝试一下递归,果然不出所料,第一次就错了。看来递归还是没搞懂。
网友评论