递归递推练习 J

来源:互联网 发布:python和java哪个好学 编辑:程序博客网 时间:2024/06/05 01:14

代码:

#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时;


0 0