求解一道Python编程题 15

斐波那契数列计算形如1,1,2,3,5,8......的数列,被称之为斐波那契数列。这个数列的特点是从第三个数字开始,每个数字都等于前两个数字之和。请用程序实现用函数实现... 斐波那契数列计算
形如1,1,2,3,5,8......的数列,被称之为斐波那契数列。这个数列的特点是从第三个数字开始,每个数字都等于前两个数字之和。

请用程序实现
用函数实现,计算斐波那契数列某项的值,并将计算结果返回。

函数定义
def fbi (num):
pass
参数说明
num是一个整数,表示斐波那契数列的项数。

返回值说明
函数返回一个整数,该整数为斐波那契数列第 num 项的值。

示例 1
参数
4
返回
3
示例 2
参数
6
返回
8
任务与要求
选做
10 分
展开
 我来答
雁西楼
科技发烧友

2020-02-17 · 有一些普通的科技小锦囊
知道小有建树答主
回答量:1118
采纳率:73%
帮助的人:407万
展开全部

斐波那契数列自第三个数开始,每个数均为之前两个数的和。

至少有两种方法来实现它。

最常见的利用迭代的方法,其核心思路是

fib(n) = fib(n-1) + fib(n-2)

而在n<2时直接,没有n-2,因此直接返回1:

def fib(num): return 1 if n<2 else fib(num-1) + fib(num-2)

这是一种很简单的实现。在阶梯数不大时,它很好用。当阶梯数很大时,因为二次手迭代,会比较慢。因此,可以在计算中保存中间值(1至n-1的阶梯数)来减少计算量:

这种方式在计算阶梯数10000时就可以保持不错的性能。如果需要多次计算该数列,则可以利用对象来保持这个中间值列表,下列代码中,Fibonaci实例只计算未曾计算的阶梯数,在重复调用时它更具优势:

class Fibonaci(object):

....history=[1, 1]

....def cacl(self, num):

........while len(self.history) <= num:

............self.history.append(self.history[-1] + self.history[-2])

........return self.history[num]

if __name__ == '__main__':

....fib = Fibonaci()

....print(fib.calc(100))

....print(fib.calc(32))

....print(fib.calc(10000))

阿刚炖蛋
2020-02-17 · TA获得超过3004个赞
知道大有可为答主
回答量:1789
采纳率:92%
帮助的人:996万
展开全部

你好!


注:题目没有提到过输入参数小于1的情况,所以并未做处理。


希望对你有帮助!

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
swiming518
2020-02-17 · 超过20用户采纳过TA的回答
知道答主
回答量:65
采纳率:40%
帮助的人:30.4万
展开全部
def fbi(num):
if num<2 :
return 1
else:
return fbi(num-1)+fbi(num-2)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式