问题是问题23,找到完美的正方形。我的代码如下所示:
function b = isItSquare1(a)
if any(ismember(a,a.^2))==0
b='false';
else
b='true';
end
end
我得到Assertion failed
,而使用此功能是正确的:
function b = isItSquare(a)
c=0;i=1;
b='false';
while c==0&i<=length(a)
if length(find(a==a(i)^2))~=0
b='yes';
c=1;
end
i=i+1;
end
b
end
Cody接受我无法理解的答案为什么?提前谢谢。
答案 0 :(得分:1)
MATLAB具有布尔类型(类型称为&#34;逻辑&#34;在MATLAB中),true
和false
(通常用1
和0
表示)。这不与字符串'true'
/ 'false'
相同。比较以下内容:
>> x = 'true'
>> y = true
这是两个根本不同的东西。如果您使用==
比较这些值:
>> 'true' == true
ans =
0 0 0 0
然后MATLAB将'true'
作为字符向量处理,并将每个值与true
进行比较,返回false=0
。
然而
>> true == 1
ans =
1
现在,针对您的问题:Cody上的第一个测试套件是
a = [2 3 4];
assert(isequal(isItSquared(a),true))
即。输出必须是true
而不是'true'
。因此,在代码中将'true'
替换为true
,将'false'
替换为false
,并且断言应该通过。
一个小提示:任何比较运算符,例如==
,~=
,<
,...自动创建逻辑(true
或false
)作为输出,例如:
>> x = (1 == 2)
x =
0