我只是在一次技术采访中被要求写一个遍历“对象”(注意引号)的算法,其中A等于B且B等于C且A等于C。
该object
问题由这些部分组成A,B and C
,并形成一个triangle
。这个人只是问对象(一个集合)是否包含所有相等的部分。
面试官想知道是否展示了各个部分A, B and C
,您是否可以知道它们是否相等而不会陷入无限循环。这个问题很愚蠢,只是为了理解,但他们仍然设法提出来。
它们在什么时候都是相等的A == B && B == C && A == C
,但是可以简化为正义A == B && A == C
。
问题的简单性导致混乱,而且措辞确实不好。
正确的措词应该是正确的。
编写算法以检查集合的各个部分,以查看它们是否彼此相等。必须注意不要陷入无限循环。例如; 如果部分A等于B并且B等于C并且A等于C可能会引起问题。
面试官的回答是我应该写一个递归函数。
是的,您可以are all my parts equal
使用递归函数回答问题。不,这不是一个有效的解决方案。
编辑:经过一番思考。不,不可能使用递归函数检查集合是否包含所有相等的部分。
最有效的解决方案如下。
function are_all_equal(parts)
{
for(int i=1; i < parts.length; i++)
if parts[i] is not same as parts[0]:
return false;
return true;
}
print are_all_equal(parts) ? "yes" : "no";
在编程中确实会发生此问题,并且要求某人编写算法来测试集合是完全正常的。根据编程语言的不同,通常只需一行代码即可解决此问题。
像他们那样措辞,并期待错误的答案是不正常的。由于这个问题是一年前提出的。我真的希望您最终在其他地方工作。我想听听原帖对他/她的影响。