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

DATE: 2015-08-11 / VIEWS: 968


<?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
 */

最后一题,实在不会,求指导方法!