0

我有一个例子只是为了展示我不知道该怎么做。当您调用该函数时,它返回 1 个水果,或者如果它滚动 5,那么我希望水果为它滚动的每个结果增加 1 倍并返回一个数组,如果那样的话,可能会进入类似的最大递归,20说得通!:)

function fruitBasket(&$fruit = array()) {
    $dice = rand(1, 5);
    switch($dice) {
        case 1:
            $fruit['watermelon'] = ++$watermelon;
        break;
        case 2:
            $fruit['orange'] = ++$orange;
        break;
        // etc...
        case 5:
            for($i = 1; $i <= rand(1, 5); $i++) {
                fruitBasket($fruit);
            }
        break;
    }
    return $fruit;
}
4

1 回答 1

0

我不确定我是否完全理解您的问题,因为您的描述有点令人困惑,我无法添加评论,但据我所知:

function fruitBasket(&$fruit = array(), $dice = 0, $depth = 1) {

    if($depth == 20)
    return $fruit;

    $dice = ($dice > 0 ? $dice : rand(1, 5));

    switch($dice) {
        case 1:
            $fruit['watermelon'] += 1;
        break;
        case 2:
            $fruit['orange'] += 1;
        break;
        // etc...
        case 5:
        $depth += 1;

            for($i = 1; $i <= rand(1, 5); $i++) {
                fruitBasket($fruit, $i, $depth);
            }
        break;
    }
    return $fruit;
}
于 2012-10-28T21:14:34.317 回答