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


 

 

 

 

2014-11-20动态规划:顺推法与逆推法中递推公式的不同!

1、动态规划的基本概念有哪些? 阶段、(阶段)状态、状态变量si、状态集Si、决策、决策变量ui(si)、决策集Di(si)、状态转移方程、决策的指标函数、策略的指标函数、最优值函数等。 2、什么...
  • Songjs19931206
  • Songjs19931206
  • 2014年12月25日 19:38
  • 1822

算法之递推算法(顺推)

1、递推算法:使用“步步为营”的方法,不断利用已有的信息推导出新东西          顺推法:是指从已知条件出发,逐步推算出要解决问题的方法。例如:斐波拉契数列就可以通过顺推法不断递推算出新的数据...
  • u011921490
  • u011921490
  • 2014年12月28日 11:03
  • 643

基础算法--顺推法

经典问题 斐波拉契的兔子 从前,有一个穷光棍,平时只知好吃懒做,不肯踏踏实实做事情,还经常想入非非做发财梦。一天,他在路边捡到一个鸡蛋,他非常高兴,捧着鸡蛋就在脑子里就盘算开了:“我借别...
  • u013598660
  • u013598660
  • 2014年10月06日 20:06
  • 1033

zoj-3329-One Person Game-有环的概率DP

感觉kuangbin写的题解不错,就直接抄袭过来啦。。。 地址:http://www.cnblogs.com/kuangbin/archive/2012/10/03/2710648.html 题意...
  • rowanhaoa
  • rowanhaoa
  • 2014年06月24日 15:31
  • 855

实用算法的分析与程序设计——递推法(顺推法)包含实例,代码

顺推法即由边界条件出发,通过递推关系式推出后项值,再由后项值按递推关系式推出再后项值。。。依次递推,直至从问题初始陈述向前推进到这个问题的解为止。实例代码#include #include using...
  • oMengLiShuiXiang1234
  • oMengLiShuiXiang1234
  • 2015年05月07日 19:19
  • 1085

数字三角形(顺推2维,逆推,顺推1维)

数字金字塔 Time Limit:1000MS  Memory Limit:65536K Total Submit:403 Accepted:232 Description 你和权权是一对很好很好的朋...
  • sslgzzzy
  • sslgzzzy
  • 2017年03月04日 11:25
  • 160

采药:顺推法

题意 在规定的时间内,可以采到的草药的最大总价值。 分析 设 f[i,j]表示前i件物品,总重量不超过j的最优价值 则 f[i,j]=max{f[i-1,j-w[i]]+P...
  • SSLGZ_yyc
  • SSLGZ_yyc
  • 2017年03月01日 17:00
  • 73

顺推金额操作

记录下思路 /// /// 审核与弃审时顺推金额 /// /// 需要处理的表数据 /// 是否审核 /// 单据...
  • fuweiping
  • fuweiping
  • 2015年06月25日 09:44
  • 278

GG 数字三角形顺推。。。

2.1 为什么要用动态规划法解题 首先,看下面一个问题:  1458 【例题1】数字三角形问题。               7              3 8             8 ...
  • SSL_zeng_yu
  • SSL_zeng_yu
  • 2017年02月25日 08:07
  • 112

背包问题 顺推解法

 五种物品,体积,重量,数量,价值分别如下:物品编号   体积    重量    数量    价值1                  30       3        10         42 ...
  • newish21
  • newish21
  • 2007年08月19日 16:38
  • 449
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:FIBONACCI-顺推
举报原因:
原因补充:

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