代码:
#include <bits/stdc++.h>
using namespace std;
int num=0;
void f(int n)
{
if(n==6174)
{
return;
}
int a[4];
a[0]=n%10;
a[1]=n/10%10;
a[2]=n/100%10;
a[3]=n/1000;
sort(a,a+4);
int max=a[3]*1000+a[2]*100+a[1]*10+a[0];
int min=a[3]+a[2]*10+a[1]*100+a[0]*1000;
n=max-min;
cout<<n<<' ';
num++;
f(n);
}
int main()
{
int n;
while(cin>>n)
{
num=0;
f(n);
cout<<endl<<num<<endl;
}
return 0;
}
分析:
根据题目所说可以知道通过递归来求每一次的值并且输出就好,结束条件就是当n=6174时;