基本上,我应该构建一个函数,该函数将为我提供与以下测试用例相同的输出;
Test.assertSimilar(testit(0,1), 1, "")
Test.assertSimilar(testit(1,2), 3, "")
Test.assertSimilar(testit(10,20), 30, "")
//a*b?
Test.assertSimilar(testit(1,1), 1, "")
Test.assertSimilar(testit(1,3), 3, "")
这是我想出的;
function testit(a,b){
return b >= (2*a) ? a+b : a*b;
}
从本质上讲,逻辑是:如果b大于或等于2a,则将a与b相加,如果不将a与b相乘。 最后一个测试用例返回4,但我不知道为什么会发生这种情况。我很好奇我在这里缺少什么,或者是否存在一些我不知道导致的基本原理这发生。从逻辑上看,它应该返回1 * 3 = 3。
答案 0 :(得分:0)
查看测试用例,您描述的逻辑不适用于最后一个测试用例。实际上3大于两倍1,因此它将是一个加法,而1 + 3确实是4。因此,您必须找到另一个逻辑。
尽管这些测试用例不足以真正确定逻辑到底是什么,但它们确实适用于简单的按位或运算:
const testit = (a, b) => a | b;
test(0,1, 1)
test(1,2, 3)
test(10,20, 30)
test(1,1, 1)
test(1,3, 3)
function test(a, b, expect) {
let result = testit(a, b);
console.log(`testit(${a},${b}) = ${result}, expect ${expect}`);
}