首页 > 解决方案 > 如何从函数内的循环中返回值?

问题描述

如果函数中有循环,如何从循环中返回值?

在这个例子中,我使用一个循环来判断一个数字是否是素数。如果我找出答案,那么我不希望循环继续。我只想退货。

private int IsPrime (int startNumb , int endNumb)
{
    bool bilPrima = true;

    for (int i = startNumb; i<= endNumb; i++)
    {
        for (int j = 2; j <= i; j++)
        {
            if (i%j==0)
            {
                bilPrima = false;
                break;
            }
        }
        if (bilPrima)
        {
            bilPrima = true;
            return i;
        }
        else
        {
            return 0;
        }
    }
}

标签: c#

解决方案


如果一个函数包含一个循环,但函数的返回值可以在循环完成之前确定,你可以只return返回值,函数的执行将结束。

所以你的函数可能看起来像这样:

private bool IsPrime(int startNumb, int endNumb)
{
    for (int i = startNumb; i <= endNumb; i++)
    {
        for (int j = 2; j <= i; j++)
        {
            if (i % j == 0)
            {
                return false;
            }
        }
    }
    return true;
}

其中一条评论建议您可能希望返回素数列表。如果是这样,那么答案将完全不同。

你可以返回一个IEnumerable<int>. 在您的函数中,创建一个List<int>. 当您循环遍历值时,每次找到质数时都将其添加到列表中。然后在函数结束时,返回列表。

你可以做同样的事情yield return- 我只是尽量不让你超载。


推荐阅读