python数值运算m op n 100+10_python 100例(10)

题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少对?

数学分析:兔子的规律为数列1,1,2,3,5,8,13,21....

可以使用数列归纳这个问题,

前两项为 a1=a2=1;后面的项规律为  an=an-1+an-2.

递归:

python里面也可以使用递归函数,所谓递归函数就是利用函数本身调用自身,然后一直不停地调用自身,达到合适的条件,然后返回计算后的值。

例如:#计算5的以内的加法

def add(j):

if j==0:

return 0

return j+add(j-1)

print(add(5))

#15  ,以上过程就是计算0+1+2+3+4+5

在这个过程中,add()函数本身调用了自身的函数return j+add(j-1),这样子一次又一次调用,最后直到 j==0,结束递归。上面的这个过程就叫做递归。

代码实现:

第一种解决方法,按照数学思维去设计算法:

第二种解决方法,斐波那契数列:

# _*_ coding:utf-8 _*_

def fab(max):

n, a, b = 0, 0, 1

while n < max:

print b , a, b = b, a + b

n = n + 1

fab(8)

斐波那契而数列升级版:

# _*_ coding:utf-8 _*_

def fab(max):

n, a, b = 0, 0, 1

while n < max:

yield b

a, b = b, a + b

n = n + 1

for i in fab(6):

print i

def fibo(n):

if n<=1:

return n

else:

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

print(fibo(8))

注意语句:

如果一个赋值语句中,要赋的值是一个表达式,那么表达式优先于赋值执行:

a=0

b=1

a, b = b, a+b 在赋值的时候,先执行右边,这时候b =1 a=0 那么 a, b = b, a+b 就是:a,b=1,0+1 赋值完的结果就是 :a=1,b=1

说简单点,就像c=3+4,那么是不是先要等右边表达式:3+4=7执行完,再把7赋值给c,这一样的道理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值