每个程序员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 */
最后一题,实在不会,求指导方法!