python斐波那契数列兔子编程(python123斐波那契数列)

http://www.itjxue.com  2023-03-07 01:15  来源:未知  点击次数: 

python做斐波那契数列。

直接创建一个类然后调用下面的def函数即可

#斐波那契数列

'''

第一位是1

第二位是1

第三位是2

公式位F(n)=f(n-1)+f(n-2)

'''

def get_Fibonacci_sequence(n):

'''输入n,遍历到第n位的斐波那契数列'''

a,b=0,1

if n=3:#即等于2 相当于1,2位特殊处理

for i in range(n-1):#操作次数是n-1,去除一次第一位的操作

c=a+b

a,b,=b,c

print(b)#这里选择先改变再输出,可以减少1次的循环

def get_Fibonacci_Num(n):

'''输入n,遍历到第n位的斐波那契数列的第n位数'''

a, b = 0, 1

if n = 3: # 即等于2 相当于1,2位特殊处理

for i in range(n - 1): # 操作次数是n-1,去除一次第一位的操作

c = a + b

a, b, = b, c

# 这里选择先改变再输出,可以减少1次的循环

return b

def get_Fibonacci_Num_recursion(n):

'''输入n,遍历到第n位的斐波那契数列的第n位数,递归实现'''

if n==1 or n==2:#特别注意,这里要用逻辑或判断,不能直接用或判断,

return 1

else:

return get_Fibonacci_Num_recursion(n-1)+get_Fibonacci_Num_recursion(n-2)

get_Fibonacci_sequence(11)

print(get_Fibonacci_Num(11))

print(get_Fibonacci_Num_recursion(11))

斐波那契数列用python怎么表示

斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13,特别指出:第0项是0,第1项是第一个1。从第三项开始,每一项都等于前两项之和。

Python 实现斐波那契数列代码如下:

#?-*-?coding:?UTF-8?-*-

#?Filename?:?test.py

#?author?by?:?

#?Python?斐波那契数列实现

#?获取用户输入数据

nterms?=?int(input("你需要几项?"))

#?第一和第二项

n1?=?0

n2?=?1

count?=?2

#?判断输入的值是否合法

if?nterms?=?0:

???print("请输入一个正整数。")

elif?nterms?==?1:

???print("斐波那契数列:")

???print(n1)

else:

???print("斐波那契数列:")

???print(n1,",",n2,end="?,?")

???while?count??nterms:

???????nth?=?n1?+?n2

???????print(nth,end="?,?")

???????#?更新值

???????n1?=?n2

???????n2?=?nth

???????count?+=?1

执行以上代码输出结果为:

你需要几项? 10

斐波那契数列:

0 , 1 , 1 , 2 , 3 , 5 , 8 , 13 , 21 , 34 ,

生兔子的经典编程算法

一般而言,兔子在出生两个月后,就有繁殖能力,一对兔子每个月能生出一对小兔子来。如果所有兔都不死,那么一年以后可以繁殖多少对兔子?

1 1月

1 2月

2 3月

3 4月

5 5月

8 6月

13 7月

21 8月

34 9月

55 10月

89 11月

144 12月

233 13月

第1种:

Private Sub Command1_Click()

i = 0

x = 1

y = 1

b = x "," y

For n = 3 To 13 Step 1

i = x + y

x = y

y = i

b = b "," i

Next

Print b

End Sub

这个算法是最经典的。其实a月的数量也就是老兔子加上新生兔子。老兔子这么算的:因为当月的生产数量为上个月的兔子总数,而这个生产数量就是由老兔子生的。所以老兔子的数量就是a-1月的数量也就是上一个月的数量。新兔子这么算的:因为新兔子就是上一个月的繁殖数量,即a-1月的繁殖数量,而这个繁殖数量就是由a-2月的总数决定的,所以新兔子就是a-2月了。所以根据这个原理,第一种方法成立。

第2种:

Private Sub Command1_Click()

i = 0

x = 1

y = 1

z = 2

b = x "," y "," z

For n = 4 To 13 Step 1

i = y * 2 + x

x = y

y = z

z = i

b = b "," i

Next

Print b

End Sub

第2种算法的逻辑是:

(a月-2的月总数)* 2 + (a月-3月总数)

因为当月的生产数量为上个月的兔子总数,而当月的新兔子(即上个月新生的兔子,这个月还未能生产)数量为上上个月的总数。

第3种:

Private Sub Command1_Click()

i = 0

x = 1

y = 1

z = 2

b = x "," y "," z

For n = 4 To 13 Step 1

i = z * 2 - x

x = y

y = z

z = i

b = b "," i

Next

Print b

End Sub

(a月总数*2) - (a-2月总数)

这第2种算法和第3种算法是基于第一种算法的原理的。只不过实在太复杂了,我自己脑子里只能粗略整理它的逻辑关系(其实也不是很懂),所以写出来大家一定看不懂。。。

后记:这个经典的兔子数列其实还可以继续玩下去。有非常复杂的递推关系(自己说的,虽然没学过什么叫真正的递推不过应该差不多吧)。每个参数影响非常复杂。我本来想继续这个混乱的递推逻辑,但想到再复杂的算法的时候我差不多都要疯掉了。。啊啊啊,暂时就这样吧~~~大脑休息下。熄火。

python编程,斐波那契数列?

婓波那契数列(前两个数的和是第三个数)

def fib(num):

fibs=[0,1]

#num=input('请输入婓波那契数列中的数据个数:')

for i in range(int(num)-2):

fibs.append(fibs[-2]+fibs[-1])

print(fibs)

print(fibs[-2])

fib(10)

(责任编辑:IT教学网)

更多

推荐JSP教程文章