php遞迴和迭代實現斐波那契數列
<?php //1 1 2 3 5 8 13 21 34 55 //迭代 function fib($n){ if($n<1) return -1; $a[1]=$a[2]=1; for($i=3;$i<=$n;$i++){ $a[$i]=$a[$i-1]+$a[$i-2]; } return end($a); } //遞迴 function fib2($n){ if($n<1) return -1; if($n==1 || $n==2) return 1; return fib2($n-1)+fib2($n-2); } echo fib(10).'<br/>'; echo fib2(10).'<br/>';
相關推薦
php遞迴和迭代實現斐波那契數列
<?php //1 1 2 3 5 8 13 21 34 55 //迭代 function fib($n){ if($n<1) return -1; $a[1]=$a[2]=1;
『PHP學習筆記』系列四:利用函式遞迴呼叫思想解決【斐波那契數列】問題和【猴子吃桃問題】問題
什麼是函式遞迴思想? 遞迴思想:把一個相對複雜的問題,轉化為一個與原問題相似的,且規模較小的問題來求解。 遞迴方法只需少量的程式就可描述出解題過程所需要的多次重複計算,大大地減少了程式的程式碼量。 但在帶來便捷的同時,也會有一些缺點,函式遞迴的執行效率不高(多次呼叫時)。
Java中的組織形式、類與物件、靜態的static關鍵字、最終的final關鍵字、方法傳參方式、遞迴(階乘、斐波那契數列、漢諾塔)
Java程式的組織形式 Java程式需要把程式碼以類的形式組織起來,然後被Java編譯器編譯,再被JVM執行。Java程式是以類的結構為基礎的。 Java程式的基本要素 識別符號 識別符號命名規範 關鍵字(保留字) 關鍵字(保留字)具有專門的意義和用途
關於遞迴的一些看法(斐波那契數列問題)
今天碰見個斐波那契數列問題(Fibonacci ),使用了遞迴呼叫的思想,程式碼如下圖所示: 遞迴和非遞迴分別實現求第n個斐波那契數 #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int Fibonacc
js遞迴求階乘、斐波那契數列
1、求一個數的階乘 階乘:n! = n * (n - 1)!,0! = 1 function mul(n) { if(n==1||n==0){ return 1; } return n * mul(n-1); } mul(5);//120 //mul(5) ==> 5 *
C語言實現斐波那契數列的兩種方法(遞迴和迭代)
兩種方法實現斐波那契數列,遞迴實現起來稍簡單些,思路也清晰些,但執行效率顯然不如迭代 下面是編譯通過的兩種方式實現斐波那契數列的C語言程式碼:/* * fibanacci.c * * Created on: 2015-3-16 * Author: flo
python實現斐波那契數列:迭代和遞迴對比
迭代和遞迴 從概念上講,遞迴就是指程式呼叫自身的程式設計思想,即一個函式呼叫本身;迭代是利用已知的變數值,根據遞推公式不斷演進得到變數新值得程式設計思想。 對於剛入門的程式設計小白而言,對遞迴的理解應該是要難於對迭代的理解的。下面將以python實現斐波那契
用遞迴,迭代,通項公式三種方法實現斐波那契數列求解
斐波那契數列指的是這樣一個數列:1、1、2、3、5、8、13、21、…… 這個數列從第三項開始,每一項都等於前兩項之和。它的通項公式為:(1/√5)*{[(1+√5)/2]^n -[(1-√5)/2]^n}(又叫“比內公式”,是用無理數表示有理數的一個範例。)(√5表
【演算法】二叉樹、N叉樹先序、中序、後序、BFS、DFS遍歷的遞迴和迭代實現記錄(Java版)
本文總結了刷LeetCode過程中,有關樹的遍歷的相關程式碼實現,包括了二叉樹、N叉樹先序、中序、後序、BFS、DFS遍歷的遞迴和迭代實現。這也是解決樹的遍歷問題的固定套路。 一、二叉樹的先序、中序、後序遍歷 1、遞迴模板 (1)
用遞迴和非遞迴實現斐波那契數列
斐波那契數列(Fibonacci sequence),又稱黃金分割數列、因數學家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖為例子而引入,故又稱為“兔子數列”,指的是這樣一個數列:1、1、2、3、5、8、13、21、34、……在數學上,斐波納契數列
PHP實現斐波那契數列(遞迴 + 非遞迴)實現
斐波那契數列: 1 1 2 3 5 8 13 21 34 55 … 概念: 前兩個值都為1,該數列從第三位開始,每一位都是當前位前兩位的和 規律公式為: Fn = F(n-1) + F(n+1) F:指當前這個數列 n:指數列的下標 非遞迴寫
C語言經典演算法(八)——遞迴實現斐波那契數列的兩種方法
後繼續整理演算法並寫出自己的理解和備註。 C++實現的:遞迴實現斐波那契數列 1、 遞迴實現斐波那契數列Fib(n) <1> 題目描述:輸入n值,求解第n項的斐波那契數列值 <2> 方法一:概念法 <3> 方法二:遞迴法 斐波那契數列值是值1
Java實現斐波那契數列(遞迴、遍歷、矩陣)
什麼是斐波那契數列 其實很簡單,可以理解為: F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*) 比如這樣一個數列:1、1、2、3、5、8、13、21、34、…… 有興趣可以看百度百科 下面我們就來實現,給定一個n,求f(n)的值
python實現斐波那契數列 用遞迴實現求第N個菲波那切數列
斐波那契數列即著名的兔子數列:1、1、2、3、5、8、13、21、34、…… 數列特點:該數列從第三項開始,每個數的值為其前兩個數之和,用python實現起來很簡單: a=0 b=1 while b < 1000: print(b) a, b = b, a+b
python學習(十七)——補充內建函式、使用迭代器協議實現斐波那契數列、描述符、pycharm的問題
一、補充內建函式 #--------------------------isinstance/isinbclass-------------- class Foo: pass class Bar(Foo): pass b1=Bar() print(isinstance(b1,
自定義迭代器實現斐波那契數列
#斐波那契阿數列 class fib: def __init__(self): self.pre=0 self.cou=1 def __iter__(self): return self def __
自定義一個迭代器實現斐波那契數列
class Fibiter(object): def __init__(self,n): #初始化引數 self.n = n #生成數列的前n個數 #當前數列中的第幾個數 self.cur
遞迴演算法實現斐波那契數列
假定兔子在出生兩個月後,就有繁殖能力,一對兔子每個月能生出一對小兔子來。如果所有兔子都不死,那麼一年以後可以繁殖多少對兔子? 這就是著名的斐波那契數列,也稱作兔子數列。 一、問題分析 剛開始,有1對幼兔,兔子總對數為1; 經過一個月後,幼兔長為小兔,兔子總對數為1
java遞迴實現斐波那契數列
/** *create Date:2016-12-23 *modified Date:2016-12-23 *modified by:shark *Description:斐波那契數列 **/ public class Shulie{public static long d
python使用遞迴、尾遞迴、迴圈三種方式實現斐波那契數列
在最開始的時候所有的斐波那契程式碼都是使用遞迴的方式來寫的,遞迴有很多的缺點,執行效率低下,浪費資源,還有可能會造成棧溢位,而遞迴的程式的優點也是很明顯的,就是結構層次很清晰,易於理解 可以使用迴圈的方式來取代遞迴,當然也可以使用尾遞迴的方式來實現。