我正在尝试编写执行以下操作的代码:

将整数的数字相乘并继续该过程,将得出令人惊讶的结果,即乘积序列始终以一位数字出现。

例如:

715-> 35-> 15-> 5

88-> 64-> 24-> 8

27-> 14-> 4
达到一位数所需的乘积数称为该整数的持久性数。因此,715和88的持久性数为3,而27的持久性数为2。编写一个程序,查找持久性大于3的唯一两位数?

我能够提出一个大概的想法,下面是代码,但它似乎不起作用:

#include <iostream>

using namespace std;

/*
 *
 */
int PersistentNum(int digit)
{
    int x;
    int pers = 0;
    int y = 1;

    while(x > 9)
    {
        do {
            x = digit % 10;
            y = y * digit;
            x = x / 10;
        } while(x > 0);
        pers++;
        x = y;
    }
    return pers;
}

int main()
{
    int repNum;
    int Persist;
    cout << "Please enter a  non-zero, positive integer: ";
    cin >> repNum;

    Persist = PersistentNum(repNum);

    cout << " the Persistence of " << repNum <<" is " << Persist;
    return 0;
}

最佳答案

您每次都必须分配,因为它保留了原来的已乘值。

您也弄乱了原始代码中x和数字的含义

代替

func(int x)

你写了
func(int digit)

更正的代码
#include <iostream>

using namespace std;

/*
 *
 */
int PersistentNum(int x)
{
    int digit;
    int pers = 0;
    int y =1 ;

    while(x > 9)
    {
        y = 1;

        do{
           digit = x % 10;
           y = y* digit;
           x = x/10;
        }while(x > 0);

        pers++;
        x = y;
    }
    return pers;
}

int main()
{
    int repNum;
    int Persist;


    cout<<"Please enter a  non-zero, positive integer: ";
    cin>>repNum;

    Persist = PersistentNum(repNum);

    cout<< " the Persistence of " << repNum <<" is " << Persist;

    return 0;
}

10-06 10:17