题目描述:
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。
n<=36
思路:
斐波那契数列的定义:
f(0) = 0,f(1) = 1,f(n) = f(n-1) + f(n-2)
斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13,特别指出:第0项是0,第1项是第一个1。从第三项开始,每一项都等于前两项之和。
python 递归实现;
// An highlighted block
# 递归
def Fibonacci_Recursion_tool(n):
if n <= 0:
return 0
elif n == 1:
return 1
else:
return Fibonacci_Recursion_tool(n - 1) + Fibonacci_Recursion_tool(n - 2)
def Fibonacci_Recursion(n):
result_list = []
for i in range(1, n + 1): result_list.append(Fibonacci_Recursion_tool(i))
return result_list
---------------------
原文:https://blog.csdn.net/FontThrone/article/details/78429771
在代码中,对于第n个斐波那契数列我们采用递归生成.而对于获取list形式的斐波那契数列我们则采取for循环获取.
Python循环实现:
// An highlighted block
def Fibonacci_Loop_tool(n):
a, b = 0, 1
while n > 0:
a, b = b, a + b
n -= 1
def Fibonacci_Loop(n):
result_list = []
a, b = 0, 1
while n > 0:
result_list.append(b)
a, b = b, a + b
n -= 1
return result_list
Fibonacci_Loop_tool 是获取 对应位数的类,而 Fibonacci_Loop 是获取获取数列的类.在这里比较特别的计算方式就在于,我们改从后向前的运算为从前到后,只是用a,b两个变量交替向前,这样就减少了生成数列的速度,当然如果想要生成某一个值的话,却需要从头开始计算在有些时候确实不太方便.
---------------------
作者:Font Tian
来源:CSDN
原文:https://blog.csdn.net/FontThrone/article/details/78429771
python yield 关键字
// An highlighted block
def Fibonacci_Yield_tool(n):
a, b = 0, 1
while n > 0:
yield b
a, b = b, a + b
n -= 1
def Fibonacci_Yield(n):
return list(Fibonacci_Yield_tool(n))
原文:https://blog.csdn.net/FontThrone/article/details/78429771
使用递归的思路
// An highlighted block
# -*- coding:utf-8 -*-
class Solution:
def Fibonacci(self, n):
# write code here
if n == 0:
return 0
elif n ==1:
return 1
numfn1 =0
numfn2 =1
for i in range(2,n+1):
currentNum = numfn1+numfn2
numfn1 = numfn2
numfn2 = currentNum
return currentNum
if __name__ == "__main__":
print Fibonacci(6)