Python:每日一题 6
本帖最后由 新手·ing 于 2017-3-26 13:58 编辑题目:斐波那契数列。
程序分析:斐波那契数列(Fibonacci sequence),又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……。
欢迎小伙伴们,一起答题!
如果你有能力,欢迎加入我们!
已经上车老司机:@ooxx7788
{:10_298:}点我上车{:10_298:} @冬雪雪冬 @jerryxjr1220
来新题目啦{:10_256:} #斐波那契数列。
def fib(n):
a,b = 1,1
for i in range(n-1):
a,b = b,a+b
return a
def fib(n):
yield 0
x = 1
y = 1
yield x
for i in range(2, n):
x, y = y, x + y
yield x
for i in fib(10):
print(i) 这个递归之前学的的时候知道,不喜欢递归,跳过不做 gopythoner 发表于 2017-4-1 00:32
这个递归之前学的的时候知道,不喜欢递归,跳过不做
{:10_277:} s=
for i in range(30):
s.append(s[-1]+s[-2])
print(s[-1],end=' ') # 斐波那契数列方法1 :
def fp(a,b):
a = a + b
#不知道怎么在递归里面停下
if a>=2000000000000000000 :
p = input()
print(a)
fp(b,a)
a = 0
b = 1
print(a)
print(b)
fp(a,b)
# 斐波那契数列 方法2 :
a = 0
b = 1
i = 0
print(a)
print(b)
for i in range(20):
c = a
a = b
b = b + c
print(b)
# 0 1 1 2 3 5 8 13 斐波那契数列不是从1开始么- - def goldlist(n):
if n == 1:
return
if n == 2:
return
total =
for i in range(2,n):
total.append(total+total)
return total
print goldlist(10) 斐波那契数列来源于两只兔子羞羞的计划生育问题,我觉得应该是从1,1开始的吧
递归的方式
def fib(n):
"""递归的方式(太慢了),参数输入需要的斐波那契数列的第n项"""
if n <= 1:
return 1
else:
return fib(n-1) + fib(n-2)
迭代的方式
def fib2(n):
"""迭代的方式,参数输入需要的斐波那契数列的第n项"""
num1,num2 = 1,1
for i in range(n-1):
num1,num2 = num1+num2, num1
return num1
知乎上看到一行的代码,模仿写了一个
# 知乎上看到的一行打印斐波那契数列,次数n在最后那个range那
print( for x in [(a, a.append((a, a+a))) for a in ([],) for i in range(100)]])
# 模仿上面写的
print( for b in [(a[-1], a.append(a[-1]+a[-2])) for a in (,) for i in range(100)]])
{:10_256:} def myfib1(n,f=0,s=1):# n用来控制运算次数,f表示运算前第一个值,s表示运算前第二个值
if n == 0:
return f# 这个很重要,返回的就是结果。
else:
return myfib1(n-1,s,f+s)# n用来控制运算次数,s表示运算后第一值,f+s表示运算后的第二个值。(0,1) (1,1) (1,2) (2,3)
print(myfib1(100)) def Fib_1(x):
if x == 1 or x == 2:
return 1
elif x > 1:
return Fib_1(x-1) + Fib_1(x-2)
def Fib_2(x):
a = b = 1
for i in range(x-2):
a,b =b,a+b
return b
for i in range(1,11):
print(Fib_1(i))
print(Fib_2(i))
以上 n = int (input ("Please input the number:"))
l =
i = 1
if n == 1:
print (0)
elif n == 2:
print (0,1)
elif n>2:
while n>= 3:
temp = l+l
l.append(temp)
i += 1
n -= 1
for each in l:
print (each,end=' ') n=1
i=1
for a in range(1,100):
print(i)
print(n)
i=i+n
n=i+n
def fuction1(a,i):
'''创建列表'''
while i != 0:
a.append(0)
i -= 1
'''
函数1测试代码
a = []
i = 2
fuction1(a,i)
print(a)
'''
def fuction2(a,i):
'''根据i创捷斐波那契数列'''
a = 0
a = 1
a = 1
j = 3
while j!=i :
a = a + a
j += 1
a = []
i = int(input('输入需要显示斐波那契数列的个数:'))
fuction1(a,i)
fuction2(a,i)
print(a) def fibonacci_list(x):
def fibonacci(y):
if y == 1:
return 0
if y == 2:
return 1
return fibonacci(y-2) + fibonacci(y-1)
count = 1
result_list = []
while count <= x:
result_list.append(fibonacci(count))
count += 1
return result_list 本帖最后由 bozhen 于 2017-8-13 12:58 编辑
def number(n):
if n == 1:
return 0
elif n == 2:
return 1
else n >= 3:
return number(n-1) + number(n-2) def fib(n):
if n == 1:
result = 0
elif n == 2:
result = 1
elif n > 2:
result = fib(n - 1) + fib(n - 2)
return result
n = int(input('请输入你想求斐波拉契数列的第几项:'))
print('斐波拉契数列的第%s项是%d。' % (n,fib(n))){:10_243:}
print("----------------斐波那契数列---------------")
def fibonacci(n):
x = 0
y = 1
for i in range(n):
x,y = y,x+y
return x
for j in range(10):
print(fibonacci(j))