递归地对数字的开始和结束数字求和,直到只剩下两个
Recursively summing start and end digits of a number until only two are left
我要实现的是以下内容:假设我们有一个数字(string
格式)“34322”。我想对开始和结束数字求和,然后对剩余数字继续重复此过程,直到只剩下两位数字。也就是说:
3+2=5, 4+2=6, 3 (563)
5+3=8, 6 (86)
我有以下方法:
string ShortenNumber(string num)
{
int firstDigit = int.Parse(num.Substring(0, 1));
int lastDigit = int.Parse(num.Substring(num.Length - 1, 1));
if (num.Length <= 2)
{
return num;
}
return (firstDigit + lastDigit).ToString() + ShortenNumber(num.Substring(1, num.Length - 2));
}
上面给出了结果563,但到此为止。我怎样才能达到预期的行为?
对整数(34322 或 563)使用递归,而不是对部分数字(例如 432,当您取出开始 3 和结束 2 时)。因此,该函数应该以某种方式(您必须对其进行编码)从输入 34322 计算输出 563,然后才使用该输出 563 作为递归调用的输入。
你用循环从 34322 计算出 563。
注意,从你在评论中对我问题的回答来看,代码中应该有一个“%10”。
根据辩证法的回答,我实现了以下解决方案:
string ShortenNumber(string num)
{
if (num.Length <= 2)
{
return num;
}
string shorterNum = "";
int startIndex = 0;
int endIndex = num.Length - 1;
while (startIndex < endIndex)
{
int firstDigit = int.Parse(num.Substring(startIndex, 1));
int lastDigit = int.Parse(num.Substring(endIndex, 1));
int digitSum = firstDigit + lastDigit;
if (digitSum >= 10)
{
digitSum = digitSum % 10;
}
shorterNum += digitSum;
if (startIndex == (endIndex - 2))
shorterNum += num.Substring(startIndex + 1, 1);
startIndex++;
endIndex--;
}
return ShortenNumber(shorterNum);
}
我要实现的是以下内容:假设我们有一个数字(string
格式)“34322”。我想对开始和结束数字求和,然后对剩余数字继续重复此过程,直到只剩下两位数字。也就是说:
3+2=5, 4+2=6, 3 (563)
5+3=8, 6 (86)
我有以下方法:
string ShortenNumber(string num)
{
int firstDigit = int.Parse(num.Substring(0, 1));
int lastDigit = int.Parse(num.Substring(num.Length - 1, 1));
if (num.Length <= 2)
{
return num;
}
return (firstDigit + lastDigit).ToString() + ShortenNumber(num.Substring(1, num.Length - 2));
}
上面给出了结果563,但到此为止。我怎样才能达到预期的行为?
对整数(34322 或 563)使用递归,而不是对部分数字(例如 432,当您取出开始 3 和结束 2 时)。因此,该函数应该以某种方式(您必须对其进行编码)从输入 34322 计算输出 563,然后才使用该输出 563 作为递归调用的输入。
你用循环从 34322 计算出 563。
注意,从你在评论中对我问题的回答来看,代码中应该有一个“%10”。
根据辩证法的回答,我实现了以下解决方案:
string ShortenNumber(string num)
{
if (num.Length <= 2)
{
return num;
}
string shorterNum = "";
int startIndex = 0;
int endIndex = num.Length - 1;
while (startIndex < endIndex)
{
int firstDigit = int.Parse(num.Substring(startIndex, 1));
int lastDigit = int.Parse(num.Substring(endIndex, 1));
int digitSum = firstDigit + lastDigit;
if (digitSum >= 10)
{
digitSum = digitSum % 10;
}
shorterNum += digitSum;
if (startIndex == (endIndex - 2))
shorterNum += num.Substring(startIndex + 1, 1);
startIndex++;
endIndex--;
}
return ShortenNumber(shorterNum);
}