我不记得数学中叫什么,但它不是力量。我正在验证连续的数字顺序。他们总是从1开始,可以到3。我真的只有3个条件。
所以我的解决方案是:
$sum = array_sum($group);
count: 1 = (Result) 1
count: 2 = (Result) 3 (1 + 2)
count: 3 = (Result) 6 (1 + 2 + 3)
但是,我想把这些3 if语句的内容减少到更简单的东西,你能帮我解决这个数学算法吗?
$winnerCount = [
[1, 3]
];
foreach ($winnerCount as $_key => $_group)
{
$winnerTotal = count($_group);
$sum = array_sum($winnerCount[$_key]);
if ($winnerTotal == 1 && $sum != 1) {
$error = true;
}
if ($winnerTotal == 2 && $sum != 3) {
$error = true;
}
if ($winnerTotal == 3 && $sum != 6) {
$error = true;
}
echo $sum;
}
我觉得我下午好好喝咖啡。
我想我可以做一些像这样的事情:
$result = [
1 => 1,
2 => 3,
3 => 6
];
if ($winnerTotal != $result[$winnerTotal]) {
$error = true
}
答案 0 :(得分:2)
公式: n = n(n + 1)/ 2
因此你可以在你的循环中尝试跟随:
if($winnerTotal != $winnerTotal ($winnerTotal + 1 ) / 2){
$error = true;
}
答案 1 :(得分:2)
第n个三角形数由公式
给出g(n) = n(n+1)/2
答案 2 :(得分:1)
你可以使用这样的循环:
function sumNum($num){
$sum = 0 ;
for($i=1;$i<=$num;$i++){
$sum += $i;
}
return $sum;
}
$sum = sumNum($count);
或者最简单的方法:
$sum = ($count*($count+1))/2;