首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Fibonacci级数优化

Fibonacci级数优化
EN

Stack Overflow用户
提问于 2021-03-29 13:32:09
回答 1查看 37关注 0票数 0

,我如何优化这一点?当我执行这个时,我正在获取超时错误,我试图在windows 10上的wampserver上执行这个错误。这段代码实际上是我为测试编写的代码,但是如果我获得$a和$b的巨大值,测试就会失败。

欢迎任何帮助。谢谢。

代码语言:javascript
复制
     * @param $n
     * @param false $offset
     * @param false $injectResult
     * @return int|mixed
     */

似乎这部分是蠕虫

代码语言:javascript
复制
function fibonacci($n, $offset = false, $injectResult = false)
{
    if ($offset == $n && $injectResult) {
        return $injectResult;
    }
    if ($n == 0) {
        return 0;
    }
    if ($n == 1) {
        return 1;
    }
    if ($n > 1) {
        return fibonacci($n - 1) + fibonacci($n - 2);
    }
}

    /**
     * Function to sum the fibonacci series result
     * @param $a
     * @param $b
     * @return float|int
     */

这部分看上去还行,

代码语言:javascript
复制
function sumFibonacci($a, $b)
{
   $diff = $b - $a;
   $result = [];
   for ($i = 0; $i <= $diff; $i++) {
       if ($i == 0) {
           $result[$i] = fibonacci($a);
       } else {
           $result[$i] = fibonacci($a + $i, $a - ($i - 1), $result[$i - 1]);
       }
   }
       return array_sum($result);
}
// Example of how to use it
echo sumFibonacci(38,58);

/**
* How can i optimise this if  $a = 38 $b= 58 e.g sumFibonacci(38,58);
*/ ```
EN

回答 1

Stack Overflow用户

发布于 2021-03-30 06:13:34

我通过将函数修改为非递归来解决这个问题。

代码语言:javascript
复制
{
    $numnar1 = 0;
    $numnar2 = 1;
    $count = 0;
    $result='';
    while ($count < $numnar) {
        $result =  $numnar1;
        $numnar3 = $numnar2 + $numnar1;
        $numnar1 = $numnar2;
        $numnar2 = $numnar3;
        $count++;
    }
    return $result;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66855158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档