FIBONACCI-顺推

转载 2015年11月21日 19:37:25

公元1202年欧洲数学家伦纳德·斐波那契在他所著的《珠算的书》(Liber Abbaci)中有这样一道习题:假定每对兔子每个月生出一对兔子。新生的兔子一个月后有了生育能力,再过一个月又生出一对兔子。那么买一对新生的兔子回来,一年后有多少对兔子?

显然,第一个月有一对,第二个月还是一对,第三个月有两对,第四个月有三对,第五个月有五对……容易推得,某月的兔子数正好是前两个月兔子数之和。如果用F(n)表示第n个月的兔子数,则当n>2时有:

F(n)=F(n1)+F(n2) n3

F(1)=F(2)=1

若定义F(0)=1,则可以写成:

F(n)=F(n1)+F(n2)n2

F(0)=1,F(1)=1

这个数列称为斐波那契数列。上面的表达式是该数列的递归定义,其终止条件是n=1n=1,递归形式是F(n)=F(n1)+F(n2)。即当n2时,函数F(n)用它本身在自变量较小的两个点处的值来(递归)表示,这个递归表示向着终止条件(n=0,n=1)变化,所以这个问题可以递归求解。可以写一个VB的函数过程来计算第n个斐波那契数。

当n=5时,fib(5)的计算过程如下:

fib(5)

=fib(4) + fib(3)

=(fib(3) + fib(2)) + (fib(2) + fib(1))

=((fib(2) + fib(1)) + (fib(1) + fib(0))) +((fib(1) + fib(0)) + fib(1))

=(((fib(1) + fib(0)) + fib(1)) + (fib(1) +fib(0))) + ((fib(1) + fib(0)) + fib(1))

=1+0+1+0+1+0+0+1=5

以下是用顺推法计算FIBONACCI数列

'//程序用以计算斐波那契函数
Public arrOut()
Sub Fibonacci()
Dim n As Integer, Result As Integer
With Sheet2
n = .Cells(2, 2)
ReDim arrOut(0 To n + 1, 1 To 2)
'输出
Result = Fibo(n)    '求最值
.Cells(3, 2) = Result
.Cells(6, 1).Resize(UBound(arrOut), UBound(arrOut, 2)) = arrOut
End With
End Sub
'Main Program
Function Fibo(n)
If n = 0 Then
  Fibo = 0
ElseIf n = 1 Then
  Fibo = 1
Else
  Fibo = Fibo(n - 2) + Fibo(n - 1)
End If
  arrOut(n, 1) = n: arrOut(n, 2) = Fibo

End Function



 


'//程序用以计算斐波那契函数
Public arrOut()
Sub Fibonacci()
Dim n As Integer, Result As Integer
With Sheet2
n = .Cells(2, 2)
ReDim arrOut(0 To n + 1, 1 To 2)
'输出
Result = Fibo(n)    '求最值
.Cells(3, 2) = Result
.Cells(6, 1).Resize(UBound(arrOut), UBound(arrOut, 2)) = arrOut
End With
End Sub
'Main Program
Function Fibo(n)
If n = 0 Then
  Fibo = 0
ElseIf n = 1 Then
  Fibo = 1
Else
  Fibo = Fibo(n - 2) + Fibo(n - 1)
End If
  arrOut(n, 1) = n: arrOut(n, 2) = Fibo
End Function


 

 

 

 

2017年网易互联网内推笔试题-Fibonacci数列

题目如下:Fibonacci数列是这样定义的: F[0] = 0 F[1] = 1 for each i ≥ 2: F[i] = F[i-1] + F[i-2] 因此,Fibonacci数列就...

HDU 1568 Fibonacci(数学 递推式)

HDU 1568 Fibonacci(数学 递推式)

hdu1588---Gauss Fibonacci(矩阵,线性递推)

根据题意:最后就是求f(b) + f(k + b) + f(2 * k + b) + …+ f((n-1) * k + b) 显然f(b) = A^b 其中A = 1 1 1 0 ...

HDU 1250 Hat's Fibonacci(递推+大数加法)

HDU 1250 Hat's Fibonacci(递推+大数加法)

hdu 2855 Fibonacci Check-up【递推+矩阵快速幂】

Fibonacci Check-up Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot...

POJ 3070: Fibonacci 递推式运算转换幂运算

《编程之美》上有一篇文章专门讲解斐波那契递推式的计算。当n特别大的时候,譬如10^9仍然用递推求解显然不妥。但是巧妙的将递推式计算转换成矩阵的幂运算之后,可以利用分治法高效的求幂运算,从而将O(n)转...

[HDU1588]Gauss Fibonacci(递推+矩阵快速幂)

不觉碧山暮,但闻万壑松。

fibonacci in Haskell

  • 2016年08月10日 04:02
  • 59B
  • 下载

Fibonacci(斐波那契)数列的JAVA解法

  • 2015年12月03日 08:47
  • 39KB
  • 下载

利用Fibonacci队列学习python

这里利用了多种方式来产生fibonacci队列。涉及到递归,装饰器,迭代器,bottom-up算法,算法复杂度分析,生成器等知识。完整理解这些语句,对理解Python的一些高级用法很有帮助。 产生fa...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:FIBONACCI-顺推
举报原因:
原因补充:

(最多只允许输入30个字)