c# - 如何从函数内的循环中返回值?
问题描述
如果函数中有循环,如何从循环中返回值?
在这个例子中,我使用一个循环来判断一个数字是否是素数。如果我找出答案,那么我不希望循环继续。我只想退货。
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;
}
}
}
解决方案
如果一个函数包含一个循环,但函数的返回值可以在循环完成之前确定,你可以只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
- 我只是尽量不让你超载。
推荐阅读
- java - 无法在 eclipse kepler 上安装 spring tools 4 (sts 4) - 缺少要求
- go - 创建数据结构
- mongodb - 如何在 MongoDB 中聚合列表?
- javascript - React :您可能需要适当的加载器来处理此文件类型,目前没有配置加载器来处理此文件(本地节点模块)
- mysql - mysql动态数据透视表组
- javascript - 在 reactjs 中将对象推送到数组中
- c++ - ifstream 在下一次迭代中不打开文件
- javascript - 为什么有时在移动版本上未定义标题?
- c++ - 自动生成到 c++ 库的 go 绑定
- java - 在学习 BFS、DFS 等寻路算法之前要学习哪些基础?