返回后,方法调用的c#递归自身一次 私有静态字符串FindBookEanOrEanOnSplits(字符串[]拆分,int索引=0) { 字符串id=“”; 如果(指数

返回后,方法调用的c#递归自身一次 私有静态字符串FindBookEanOrEanOnSplits(字符串[]拆分,int索引=0) { 字符串id=“”; 如果(指数,c#,recursion,return,call,C#,Recursion,Return,Call,例如,在第二次调用后,id不再是空的,然后跳出来返回,但在此行调用一次(突然返回)FindBookEanOrEanOnSplits(splits,index+1)这使得id为空而不是没有空值为什么要递归地执行此操作?你可以在一个循环中完成: private static string FindBookEanOrEanOnSplits(string[] splits, int index = 0) { string id = ""; if (inde

例如,在第二次调用后,id不再是空的,然后跳出来返回,但在此行调用一次(突然返回)FindBookEanOrEanOnSplits(splits,index+1)这使得id为空而不是没有空值

为什么要递归地执行此操作?你可以在一个循环中完成:

    private static string FindBookEanOrEanOnSplits(string[] splits, int index = 0)
    {
        string id = "";
        if (index < 3)
        {
            id = Extractor.ExtractBookEanOrEan(splits[index].ToUpper());

            if (id == string.Empty)
                FindBookEanOrEanOnSplits(splits, index + 1);
        }

        return id;
    }
私有静态字符串FindBookEanOrEanOnSplits(字符串[]拆分)
{
字符串id=“”;
对于(int i=0;i<3;i++)
{
id=Extractor.ExtractBookEanOrEan(拆分[index].ToUpper());
如果(!string.IsNullOrEmpty(id))中断;
}
返回id;
}

递归调用可能会使调试混淆。在这种情况下完全没有必要,因为您只需要执行一个简单的索引操作并调用另一个方法。当您处理的数据结构或操作本质上是分层的,并且需要在每个级别维护“状态”时,递归非常有用。

您的问题是什么?我不明白!您错过了id=FindBookEanOrEanOnSplits(…)for循环甚至比递归更快…:)
private static string FindBookEanOrEanOnSplits(string[] splits)
{
    string id = "";

    for (int i = 0; i < 3; i++)
    {
        id = Extractor.ExtractBookEanOrEan(splits[index].ToUpper());
        if (!string.IsNullOrEmpty(id)) break;
    }

    return id;
}