Go斐波拉契數列(Fibonacci)(多種寫法)
1 前言
斐波拉契數列有遞迴寫法和尾遞迴和迭代寫法。
2 程式碼
//recursion func fib(n int) int{ if n < 2{ return n }else{ return fib(n-1) + fib(n-2) } } func fibcore(n int) (int,int){ if n < 2{ return 0,n }else{ a,b := fibcore(n-1) return b,a+b } } //tail recursion func fib2(n int)(int){ _,b:= fibcore(n) return b } //iteration func fib3(max int)(int){ n:=0 a,b:=0,1 for { if n < max{ a,b = b,a+b n ++ }else{ break } } return b }
3 效能分析
測試第40個的數列值
遞迴
尾遞迴(引數是40,100都大約是這個時間量)
迭代(引數是40,100都大約是這個時間量)
說明:本質上尾遞迴就是迭代,只是寫法略有差別
相關推薦
Go斐波拉契數列(Fibonacci)(多種寫法)
1 前言 斐波拉契數列有遞迴寫法和尾遞迴和迭代寫法。 2 程式碼 //recursion func fib(n int) int{ if n < 2{ return n }else{ return fib(n-1) + fib(n-2) } } func fibcore(n
GO語言實現斐波那契數列(Fibonacci)
斐波那契數列指的是這樣一個數列: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144… 這個數列從第3項開始,每一項都等於前兩項之和。 package main imp
斐波拉契數列=>多種方法的比較(分治、遞迴、動態規劃/遞推)
斐波拉契數列是一個很不錯的例子,它的第一項和第二項都為1,以後的每一項都是前兩項的和。 這樣,斐波拉契數列可以有很多種解法。 首先用遞迴: //遞迴for斐波那契數列 #include<cstdio> #include<cstring> #incl
HDU1021 ZOJ2060 Fibonacci Again【斐波拉契數列+模除+水題】
Fibonacci Again Time Limit:2 Seconds Memory Limit:65536 KB There are another kind of Fibonacci numbers: F(0) = 7, F(1) = 11, F(n) =
JS斐波拉契數列
script nbsp fun scrip get targe .... urn blank 斐波拉契數列又稱為“兔子數列”,指的是這樣一個數列:1、1、2、3、5、8、13、21、34.......... 規律:1+1=2,1+2=3,2+3=5,3+5=8.......
使用循環解決斐波那契數列Fibonacci sequence
log class 兔子 斐波那契數 知識 多少 oba enc 傳遞 1 # encoding:utf-8 2 ‘‘‘ 3 Created on 2017年8月7日 4 題目:古典問題:有一對兔子,從出生後第3個月起每個月都生一對兔子, 5 小兔子長到第三個月
在c#中編寫斐波拉契數列程序
lin 一個 array 循環 nbsp 程序 readline 斐波拉契 () 思路:首先因為輸出的是一個數列,又因為不定長,所以要見一個集合來裝數列,其次確定第一個數和第二個數都為1,然後根據斐波拉契數列的特點,確定是一個循環語句,再根據從第三位開始,每個數字都是前兩個
經典算法___斐波拉契數列
python__算法小例子分享一段斐波拉契數列的例子,不過我對算法沒怎麽接觸過,只能寫出最簡單,最基本的def fibs(num): result = [0,1] #斐波拉契數列初始變量 for i in range(num-2): #循環,因為上邊已經有
斐波拉契數列
exce pan return tle span 返回值 true one num 生成器:斐波拉契數列 參考廖雪峰的url:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a
《劍指offer》------斐波拉契數列
ace stream names fibonacci inf ++ ios com 斐波拉契 題目一:求斐波拉契數列的第n項。 寫出一個函數,輸入n,求斐波拉契(Fibonacci)數列的第n項。斐波拉契數列定義如下: C++實現: //斐波拉契數列 #include
隨機求斐波拉契數列第n位的代碼
-- Go golden tint lse [] next util ret 1------------------------------------------------------------ package oo.day02;import java.util.Sc
[Python學習] 斐波那契數列 Fibonacci Sequence
Python Fibonacci 斐波那契數列 一個簡單的斐波那契數列,用代碼如下: # Filename: fibonaci.py # author by: stephen def fib(n): #定義一個函數叫 fib() if n <= 1: #定義數
Python入門:生成器應用-斐波拉契數列
ner 賦值 斐波拉契 元組 return ext 生成 顯示 bsp 例子: 1,1,2,3,5,8,13,21...... def fib(max): n,a,b=0,0,1 while n<max: #print(b) yield(b)
java循環輸出斐波拉契數列
cci 方法 turn 研究 技術分享 int string fibonacci println 斐波拉契--引用於百度百科 斐波那契數列(Fibonacci sequence),又稱黃金分割數列、因數學家列昂納多·斐波那契(Leonardoda Fibonacci)以兔
實現斐波拉契數列的四種方式python代碼
青蛙跳 物理 面試 word tool rgs lang 斐波拉契數列 std 斐波那契數列 1. 斐波拉契數列簡介 斐波那契數列(Fibonacci sequence),又稱黃金分割數列、因數學家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖為例
C# 斐波拉契數列求第n個值
斐波拉契數列,求第n個值是多少 有這樣一個數列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55,求出第n 位的值 int num1 = 1, num2 = 1, sum = 0; &
輸入一個數據n,計算斐波那契數列(Fibonacci)的第n個值 1 1 2 3 5 8 13 21 34 規律:一個數等於前兩個數之和。
import java.util.Scanner; /** * 輸入一個數據n,計算斐波那契數列(Fibonacci)的第n個值 1 1 2 3 5 8 13 21 34 規律:一個數等於前兩個數之和 * 計算斐波那契數列(Fibonacci)的第n個值. */ public cla
粉櫻花之戀(矩陣快速冪求斐波拉契數列)
qn是個特別可愛的小哥哥,qy是個特別好的小姐姐,他們兩個是一對好朋友 [ cp (劃掉~) 又是一年嚶花爛漫時,小qn於是就邀請了qy去嚶花盛開的地方去玩。當qy和qn來到了田野裡時,qy驚奇的發現,嚶花花瓣以肉眼可見的速度從樹上長了出來。 仔細看看的話,花瓣實際上是以一定
實現斐波拉契數列的四種方式python程式碼
斐波那契數列 1. 斐波拉契數列簡介 斐波那契數列(Fibonacci sequence),又稱黃金分割數列、因數學家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖為例子而引入,故又稱為“兔子數列”,指的是這樣一個數列:1、1、2、3、5、8、13、21、34、……在數學上,斐波納契
斐波拉契數列求解
定義 無窮數列1,1,2,3,5,8,13,21,34,55,,,,,,,稱為斐波拉契數列。 將其遞迴定義如下圖所示: 將其非遞迴定義如下所示: 實現 採用遞迴方式程式碼如下: #include <stdio.h> i