python 100例(10)

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

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

能够使用数列概括这个问题,函数

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

递归:设计

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

例如:#计算5的之内的加法utf-8

          def add(j):数学

               if j==0:coding

                    return 0yield

              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,这同样的道理

相关文章
相关标签/搜索