我要實作的是以下內容:假設我們有一個數字(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,但停在那里。我怎樣才能實作所需的行為?
uj5u.com熱心網友回復:
對整數(34322 或 563)使用遞回,而不是對部分數(例如 432,當您取出開始 3 和結束 2 時)。因此,該函式應該以某種方式(您必須對其進行編碼)從輸入 34322 計算輸出 563,然后才使用該輸出 563 作為遞回呼叫的輸入。
您使用回圈從 34322 計算 563。
請注意,從您在評論中對我的問題的回答來看,代碼中應該存在一個“% 10”。
uj5u.com熱心網友回復:
根據 Dialecticus 的回答,我實施了以下解決方案:
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);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/435105.html
