PHP写一个函数,数组A中有n个整数,在不允许使用另外数组的情况下,将A中的每个整数循环右移m个位置,输出循环右移m位后的数组。例如:函数调用funcname(10,5),运行结果6789012345
时间: 2024-06-02 17:13:51 浏览: 79
<?php
function rotateArray(&$arr, $m) {
$n = count($arr);
$m = $m % $n;
if ($m == 0) {
return;
}
$gcd = gcd($n, $m);
for ($i = 0; $i < $gcd; $i++) {
$temp = $arr[$i];
$j = $i;
while (true) {
$k = $j + $m;
if ($k >= $n) {
$k -= $n;
}
if ($k == $i) {
break;
}
$arr[$j] = $arr[$k];
$j = $k;
}
$arr[$j] = $temp;
}
}
function gcd($a, $b) {
if ($b == 0) {
return $a;
} else {
return gcd($b, $a % $b);
}
}
$arr = array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
rotateArray($arr, 5);
echo implode('', $arr); // 输出:5678901234
?>
阅读全文