1 回答

TA贡献1936条经验 获得超7个赞
这是递归的一个很好的候选者,如果你创建一个返回与其输入相同类型的输出的函数,你就可以这样做。它会重复自己,直到它以一位数字结束。
public static string LuckyNumber(string date) // "06/07/1985"
{
var result = (date ?? "") // in case date is null
.ToCharArray() // ['0','6','/','0','7','/','1','9','8','5']
.Where(char.IsNumber) // ['0','6','0','7','1','9','8','5']
.Select(char.GetNumericValue) // [0,6,0,7,1,9,8,5]
.Sum() // 36
.ToString(); // "36"
if (result.Length == 1) return result; //"36" is not 1 digit, so...
return LuckyNumber(result); //repeat the above with "36"
}
执行:
string date = "06/07/1985";
var luckyNumber = LuckyNumber(date);
System.Console.WriteLine(luckyNumber);
小提琴: https ://dotnetfiddle.net/5M7Ozv
- 1 回答
- 0 关注
- 72 浏览
添加回答
举报