PHP 1000只狗,从第一头起算,求最后活着的狗 代码实现

1.如果题目是1000只狗,从第一头起算,每隔一头杀一头(数到底后从第一头重新开始算),最后只留一只是活的,请问这是第几只狗?

2.写入一个数组,不管值是多少,按数组下标进行排除,答案:512

<?php
header("Content-Type: text/html; charset=utf-8");

//1000只狗,从第一头起算,每隔一头杀一头(数到底后从第一头重新开始算),最后只留一只是活的,请问这是第几只狗
//此方法是从第一只开始杀

//生成1000的数组
$arr = [];
for ($i = 1; $i <= 1000; $i++) {
    $arr[] = $i;
}

abc($arr);

function abc($value = [])
{
    $values = [];

    //循环杀
    for ($i = 0; $i <= count($value); $i++) {

        //留下的数写入新的数组
        if ($i % 2 == 1 && !empty($value[$i])) {
            $values[] = $value[$i];
        }
    }

    //打印每次循环剩余的数
    var_dump($values);

    if (count($values) > 1) {
        abc($values);
    } else {
        return $values;
    }

}

?>

运行结果

PHP 1000只狗,从第一头起算,求最后活着的狗 代码实现

PHP 1000只狗,从第一头起算,求最后活着的狗 代码实现