<?php
/**
* 测试类
*
* Created by PhpStorm.
* User: guoshipeng
* Date: 2022/10/20
* Time: 10:43
*/
namespace App\Http\Controllers\Test;
use App\Http\Controllers\Controller;
class TestController extends Controller
{
/**
* 获取斐波拉且
*/
public function fb(){
dd($this->getFb(10));
// dd($this->other(5));
// dd($this->getDieDai(5));
}
/**
* 递归调用实现-斐波拉且
*
* @param $n
* @return int
*/
private function getFb($n){
if ($n <= 0){
return 0;
}
if ($n == 1 || $n == 2){
return 1;
}
return $this->getFb($n - 1) + $this->getFb($n -2);
}
/**
* 迭代实现-斐波拉且
*
* @param $n
* @return int
*/
private function getDieDai($n){
if($n<=1){
return 1;
}
$sum = 2;
$pre = 1;
$prepare = 1;
for($j = 2; $j <= $n; $j++){
$total = $pre + $prepare;
$prepare = $pre;
$pre = $total;
//当前最新值
echo $total."\n";
//所有累计和
$sum += $total;
}
return $sum;
}
/**
* 非递归实现-斐波拉且
* @return mixed
*/
private function other($n){
$arr[0] = $arr[1] = 1;
for($i = 2; $i < $n; $i++){
$arr[$i] = $arr[$i - 1] + $arr[$i -2];
}
return $arr;
}
}
