Находить сумму цифр числа n, пока результат не будет состоять из одной цифры - C#
Формулировка задачи:
находить сумму цифр числа n( любого от 1 до 10^9)пока результат не будет состоять из одной цифры
Решение задачи: «Находить сумму цифр числа n, пока результат не будет состоять из одной цифры»
textual
Листинг программы
using System;
using System.Linq;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int val = 35353535;
Console.WriteLine(val);
Console.WriteLine(val.DigitsSum());
Console.WriteLine(val.OneDigitDigitsSum());
Console.ReadKey();
}
}
static class IntExtentions
{
public static int Fact(this int n) //метод расширения для нахождения факториала
{
return n == 0 ? 1 : n * Fact(n - 1);
}
public static int SumDigitsFacts(this int n) //метод расширения для нахождения суммы факториалов цифр
{
return n == 0 ? n : (n % 10).Fact() + (n / 10).SumDigitsFacts();
}
public static int DigitsSum(this int n) //метод расширения для нахождения суммы цифр
{
int nextn = n / 10;
return nextn == 0 ? n : n % 10 + nextn.DigitsSum();
}
public static int OneDigitDigitsSum(this int n) //метод расширения для нахождения суммы цифр до одной
{
int sum = DigitsSum(n);
return sum < 10 ? sum : sum.OneDigitDigitsSum();
}
}
}