【发布时间】:2016-05-23 09:54:22
【问题描述】:
所以到目前为止我一直在尝试练习递归,结果卡住了。
我必须编写一个bool 类型的方法,并采用两个参数(整数数组和整数)。该方法本身应该检查数组中的数字是否大于 1000。
根据第二个参数,它应该只检查那些数字。所以如果数组是4, 5, 1001, 1003,第二个参数是3,那么只有数组中的前3个值应该被检查(4,5,1001)。在这种情况下,它应该返回 false,因为 4 和 5 小于 1000。但是如果前 3 个值大于 1000,则方法应该返回 true。
这是我方法的剩余部分。我以前试过很多。
我有点困惑它应该如何与Boolean 一起工作。
public bool sumofD(int [] x , int n)
{
if (x[n] < 1000)
{ return false; }
else
{
sumofD(x, n - 1);
return true;
}
}
【问题讨论】:
-
您确定要
return sumofD(x, n -1)吗?在这里你说直到x[n] < 1000继续执行n-1。 while 循环更适合这种情况 -
我需要返回 true 或 false ,但是方法要递归编写
-
你可以使用这个更具可读性的 LINQ 版本:
bool allGreaterEqual1000 = x.Take(n-1).All(i => i >= 1000) -
如果它调用自己是递归的。这是递归的基础,你需要注意的关键是确保有一个端点,主要是通过保护你的参数。例如。
if (n < 0) return; -
@TimSchmelter 当然有比递归方法更好的解决方案,但我认为 OP 专门练习递归,即使它是一个不好的递归示例。