找回密码
 加入
搜索
查看: 1429|回复: 4

递归求斐波那契数列的第n项

[复制链接]
发表于 2018-1-21 16:49:38 | 显示全部楼层 |阅读模式
数列1、1、2、3、5、8、13、21、34、……,前2项为1、1,之后的每一项等于前2项之和,称之为斐波那契数列。
请使用递归求出斐波那契数列的第n项。
这是其他论坛转过来的,正好前几天群里有人问这个代码,就发过来吧。简单的很,但是递归的效率很低,抛砖引玉,希望有更强大的算法代码。

For $i = 0 To 5
        ConsoleWrite('_CalcFbn(' & $i & ')=' & _CalcFbn($i) & @CRLF)
Next
Func _CalcFbn($n)
        If $n < 2 Then Return $n
        Return _CalcFbn($n - 1) + _CalcFbn($n - 2);
EndFunc   ;==>_CalcFbn
发表于 2018-1-21 17:27:28 | 显示全部楼层
这个用递归会慢死啊
发表于 2018-1-21 18:26:02 | 显示全部楼层
几乎不用递归,就是因为效率问题
Local $ii = 60  ;位
Local $nX = ___Test($ii)
MsgBox(0, '', $ii & ' = ' & $nX)

Func ___Test($ii, $n0 = 0, $n1 = 1, $nX = 1)
        If $ii = 1 Then Return $nX
        $ii -= 1
        $nX = $n0 + $n1
        $n0 = $n1
        $n1 = $nX
        Return ___Test($ii, $n0, $n1, $nX)
EndFunc   ;==>___Test

评分

参与人数 1威望 +1 金钱 +100 贡献 +1 收起 理由
haijie1223 + 1 + 100 + 1 A版厉害!受教!

查看全部评分

发表于 2018-1-21 21:55:22 | 显示全部楼层
大赞一下,都历害
发表于 2018-3-26 00:58:31 | 显示全部楼层
在这里学到了函数内调用自己。我穷只有一个金币了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-25 08:51 , Processed in 0.074116 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表