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,這同樣的道理

相關文章
相關標籤/搜索