簡體   English   中英

如何編寫C#遞歸方法?

[英]how write C# Recursion method?

我想使用C# Recursion編寫以下for循環,請指導我。 謝謝 !

 StringMobileNo = value.ToString();

            for (int i = 0; i < 3; i++)
            {
                if (StringMobileNo.StartsWith("0"))
                {
                    StringMobileNo = StringMobileNo.Remove(0, 1);
                }

            }

如果要遞歸刪除前導零,可以執行以下操作:

public string RemoveZeroes(string input)
{
    if (!input.StartsWith("0"))
        return input;

    return RemoveZeroes(input.Remove(0, 1));
}

一個解釋:

  1. 檢查是否有前導零。
  2. 如果不是,只需返回輸入字符串。
  3. 如果是這樣,請刪除第一個零,然后再次出現,在刪除第一個字符的情況下調用相同的方法。

這將導致該方法重復執行,直到最后沒有前導零為止,這時返回的字符串(除去所有前導零)將一直返回到整個調用堆棧。

然后像這樣調用:

var myString = RemoveZeroes(StringMobileNo);

但是,只需執行以下操作即可達到相同目的:

StringMobileNo.TrimStart('0');

請注意,我在這里假設i < 3條件是任意退出條件,並且您實際上要刪除所有前導零。 這是讓您指定要刪除的數量的一種:

public string RemoveZeroes(string input, int count)
{
    if (count < 1 || !input.StartsWith("0"))
        return input;

    return RemoveZeroes(input.Remove(0, 1), count - 1);
}

您根本不需要遞歸。

而是使用TrimStart刪除所有前導0

StringMobileNo.TrimStart('0')

我認為您不需要在這里使用Recursion功能。

您可以使用String.TrimStart("0")但如果要使用Recursion函數

嘗試這個:

class Program
{
    static void Main(string[] args)
    {
       Recursion("000012345",0);
    }
    static void Recursion(string value,int c)
    {
        String MobileNo = value;
        int count=c;

        if (MobileNo.StartsWith("0") && count<3)
        {
            count++;
            Recursion(MobileNo.Remove(0, 1),count);
        }

     }
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM