因此,我试图找出我们的东西,到目前为止,我已经看到了一些解决CS50课程提德曼问题的方法。我怀疑的是following>>
我们有这个code>>
// Test for cycle by checking arrow coming into each candidate
bool cycle(int end, int cycle_start)
{
// Return true if there is a cycle created (Recursion base case)
if (end == cycle_start)
{
return true;
}
// Loop through candidates (Recursive case)
for (int i = 0; i < candidate_count; i++)
{
if (locked[end][i])
{
if (cycle(i, cycle_start))
{
return true;
}
}
}
return false;
}在这个例子中,>>行
if (locked[end][i])我的理解是,这意味着锁定是真实的,这意味着那里有一个箭头。我想我明白了。
但我记得锁定的数组Lockedmax的值为false,作为锁定的每对的值。
考虑到所有对都是"false",那么我的理解是条件here>>
if (locked[end][i])永远不会满足,因为一切都是错误的,总是在通过检查周期函数之前。
我错了吗?如果是的话,请在这里帮助我理解递归函数是如何工作的。
谢谢。
发布于 2022-10-21 20:40:20
lock_pairs调用循环将边设置为true,因为它找到了它们,因此,只有在第一次边缘检查时,所有这些都是假的。
https://stackoverflow.com/questions/73919381
复制相似问题