如何递归迭代日期的数字和总和

本文关键字:日期 数字 迭代 何递归 递归 | 更新日期: 2023-09-27 18:30:59

我想递归迭代日期的数字,将它们相加,然后在第一个总和中计算各个数字的另一个总和。

例如出生日期 1947年8月15日 (15/08/1947)

1+5+0+8+1+9+4+7 = 35

3+5 = 8

答案: 8

LINQ 的.Aggregate()函数对我帮助很大...

DOB.toString().Aggregate((a,b)=>(int)a+(int)b)

。但它的结果是 35 :(

我想要一个递归的 LINQ 调用,结果始终为一位数。

如何递归迭代日期的数字和总和

string result = DOB.ToString("ddMMyyyy");
while (result.Length > 1)
    result = result.Sum(c => int.Parse(c.ToString()))
                   .ToString();

DOB.ToString("yyyymmdd") 只返回 8 位数字。每个数字不超过 9,因此第一个总和永远不会超过 8*9=72。因此,只需要一个又一个求和。最后,一个单林克的答案是:

sum =
       dob.ToString("yyymmdd")
          .Aggregate(0, (a, b) => a + int.Parse(b.ToString())).ToString()
          .Aggregate(0, (a, b) => a + int.Parse(b.ToString())).ToString()
          .Aggregate(0, (a, b) => p + int.Parse(b.ToString()));