Я пытаюсь создать функцию, которая возвращает постоянство числа, основной проблемой, на мой взгляд, является цикл do while в нижней части, я не знаю, как заставить его обнаруживать, когда есть одна цифра. Цель состоит в том, чтобы выполнить итерацию с помощью вложенной функции и увеличивать число с каждой итерацией до тех пор, пока n не станет равным однозначному числу. Счетчик - это постоянство чисел, которое означает, сколько раз вы должны умножать цифры в num, пока не достигнете одной цифры. Я ожидаю 3, но вместо этого получаю значение 2.
class Program
{
static void Main(string[] args)
{
Console.WriteLine(Persist.Persistence(39));
Console.ReadLine();
}
}
public class Persist
{
public static int Persistence(long n)
{
int count = 0;
if (n.ToString().Length == 1)
{
return count;
}
count = 1;
//break up each number in the long individually.
List<long> listofLong = new List<long>();
while (n > 0)
{
listofLong.Add(n % 10);
n = n / 10;
}
//First iteration of each number mult each other in list
long calculate(List<long> seperatedNums)
{
long mult = 1;
for (int i = 0; i < seperatedNums.Count; i++)
mult *= seperatedNums[i];
return (int)mult;
}
do
{
calculate(listofLong);
count++;
} while ((Math.Floor(Math.Log10(n)) + 1) > 1);
return count;
}
}
}