php用函数实现输出斐波那契数列的前20项
发布网友
发布时间:2022-04-29 10:18
我来回答
共2个回答
懂视网
时间:2022-04-29 14:40
斐波纳契数列通常做法是用递归实现,当然还有其它的方法。这里现学现卖,用PHP的迭代器来实现一个斐波纳契数列,几乎没有什么难度,只是把类里的next()方法重写了一次。
注释已经写到代码中,也是相当好理解的。
/**
* @author 简明现代魔法 http://www.nowamagic.net
*/
class Fibonacci implements Iterator {
private $previous = 1;
private $current = 0;
private $key = 0;
public function current() {
return $this->current;
}
public function key() {
return $this->key;
}
public function next() {
// 关键在这里
// 将当前值保存到 $newprevious
$newprevious = $this->current;
// 将上一个值与当前值的和赋给当前值
$this->current += $this->previous;
// 前一个当前值赋给上一个值
$this->previous = $newprevious;
$this->key++;
}
public function rewind() {
$this->previous = 1;
$this->current = 0;
$this->key = 0;
}
public function valid() {
return true;
}
}
$seq = new Fibonacci;
$i = 0;
foreach ($seq as $f) {
echo "$f ";
if ($i++ === 15) break;
}
程序运行结果:
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610
推荐:《PHP教程》
热心网友
时间:2022-04-29 11:48
function fbnq($n){
if($n <= 0) return 0;
if($n == 1 || $n == 2) return 1;
return fbnq($n - 1) + fbnq($n - 2);
}
for ($i = 1;$i<=20;$i++) {
echo fbnq($i).'<br />';
}
用php做for循环输出斐波那契1-100的数列
php//初始化前两项$prevNum1 = 0;$prevNum2 = 1;//输出初始值echo $prevNum1,"\n";echo $prevNum2,"\n";for(;true;) { echo $prevNum1 + $prevNum2,"\n"; /** * 根据 斐波那契数列的规则 * 从第三项开始,每一项都是前两项之和 * 所以这里重新计算一下项...
菲波拉契数列的第一项为0,第二项为1,以后的每一项是它前两项的和...
<?php //显示斐波那契数列的前三十项; 第一项:0;第二项1;每一项都是前两项的的和 echo "0"."";echo "1"."";b=1;temp = 0;for($i=1;$i<=28;$i++){ c = $temp+$b;echo $c."";temp = $c-$temp;b=$c;} ?> php 供参考 ...
编写一个java类,控制台输出1,1,2,3,5,8,13
importjava.util.ArrayList;importjava.util.List;/ 输出斐波那契数列。author老紫竹 / publicclassTT{ privateList<Integer>list=newArrayList<Integer>();publicTT(intnumber){ list.add(1);list.add(1);for(inti=2;i<=number;i++){ list.add(list.get(i-1)+list.get(i-2));} } publicSt...
计算机里面什么是递归?
一个常见的例子是斐波那契数列: F(n) = F(n − 1) + F(n − 2)。为了使这样的定义有用,它必须引入非递归定义的值,在这种情况下,F(0) = 0,F(1) = 1。 一个著名的递归函数是阿克曼函数,它不同于斐波那契数列,如果没有递归,它将无法被表达的。涉及递归定义的证明 如前几节所述,将标准的案例...
哪位大虾能告诉我怎么证明斐波那契数列的后项与前项之比趋近黄金分割...
这个……是一个很高深的问题。斐波那契数列有通项公式,里面含有 根号5-1等与黄金分割密切相关的东西,后项与前项之比趋近黄金分割,用数学方法计算一下可以证明,也许与这个有关吧。看看http://www.gzsx.net/Article/ShowArticle.asp?ArticleID=48 上面有详细证明。另外,与这个性质有关的应用也很...
菲薄纳西数列是怎么回事
=1,以及对于3-t<=n<=0,有a(n)=0.在链接http://bbs.emath.ac.cn/viewthread.php?tid=667&page=3&fromuid=20#pid8349中mathe给出了t阶斐波那契数列的通项公式:[r^(n-1)(r-1)/((t+1)r-2t)], 其中r是方程x^{t+1}-2x^t+1=0的唯一一个大于1的正数根(可以看出r非常接近2)...
谁知道阿米莉亚序列和斐波那契数列是什么?
斐波纳契数列,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从1960年代起...
django中如何实现轮播图(java轮播图怎么实现)
gofmt工具、godoc文档生成工具详解、斐波那契数列、数据和切片、makenew、字符串、go程序调试、slicemap、map排序、常用标准库使用、文件增删改查操作、函数和面向对象详解、并发、并行与goroute、channel详解goroute同步、channel、超时与定时器reover捕获异常、Go高并发模型、Lazy生成器、并发数控制、高并发web服务器的...
django多少天学会(学django之前要学什么?)
第六天:面向对象编程(OOP)(6小时):对象,类,方法和构造函数,面向对象编程之继承 第七天:算法(6小时):搜索(线性和二分查找)、排序(冒泡排序、选择排序)、递归函数(阶乘、斐波那契数列)、时间复杂度(线性、二次和常量) 通过第一周时间,python大致能熟悉了,自学能力稍微弱一点找人带下你,节约自己的时间。 注意:别...
什么是质数