每个程序员1小时内必须解决的5个编程问题[PHP版]

<?php
/**
* 用for、while和递归三个函数计算一个列的总和
*/
$a = '1,2,4,6,8,9,13';
function for_f($str){
$str = explode(',', $str);
$num = 0;
for($i=0;$i < count($str);$i++){
$num += $str[$i];
}
return $num;
}
function while_f($str){
$str = explode(',', $str);
$i = $num = 0;
while ($i < count($str)) {
$num += $str[$i];
$i++;
}
return $num;
}
function recursion_f($str){
if(empty($str)) return 0;
$str_arr = explode(',', $str.',');
if($str_arr[0]){
return $str_arr[0] + recursion_f(str_replace($str_arr[0].',', '', $str.','));
}
}
echo $a.'<br>';
echo '结果:'.for_f($a).'<br>';
echo '结果:'.while_f($a).'<br>';
echo '结果:'.recursion_f($a).'<br>';
echo '<hr>';
/**
* 交错合并两个列
*/
$b = 'a,b,c,d,E,F,G,H';
$c = '1,2,3,4,5,4,6,8,9,23,56';
function staggered_merge($b,$c){
$b = explode(',', $b);
$c = explode(',', $c);
$len = count($b)>=count($c)?count($b):count($c);
for($i=0;$i<$len;$i++)
{
(isset($b[$i])) && $arr[] = $b[$i];
(isset($c[$i])) && $arr[] = $c[$i];
}
//return implode(',', array_merge($arr,array_slice($b,$len),array_slice($c,$len)));
return implode(',', $arr);
}
echo $b.'<br>';
echo $c.'<br>';
echo '结果:'.staggered_merge($b,$c);
echo '<hr>';
/**
* 编写一个计算前100位斐波那契数的函数
*/
function booo()
{
$array = array(0, 1);
$i = 2;
while (count($array) < 100) {
$array[$i] = $array[$i-1]+$array[$i-2];
$i ++;
}
return implode(',', $array);
}
echo '结果:'.booo();
echo '<hr>';
/**
* 编写一个能将给定的非负整数列表中的数字排列成最大数字的函数
* 答案:http://www.mithink.cn/blog/39
*/
最后一题,实在不会,求指导方法!