摘要:所謂遞歸其實(shí)就是函數(shù)本身調(diào)用函數(shù),直到滿足指定條件之后一層層退出函數(shù),例如從前有座山,山里有座廟,廟里有個(gè)老和尚,正在給小和尚講故事呢故事是什么呢從前有座山,山里有座廟,廟里有個(gè)老和尚,正在給小和尚講故事呢故事是什么呢從前有座山,山里有座廟
所謂遞歸其實(shí)就是函數(shù)本身調(diào)用函數(shù),直到滿足指定條件之后一層層退出函數(shù), 例如
從前有座山,山里有座廟,廟里有個(gè)老和尚,正在給小和尚講故事呢!故事是什么呢?“從前有座山,山里有座廟,廟里有個(gè)老和尚,正在給小和尚講故事呢!故事是什么呢?‘從前有座山,山里有座廟,廟里有個(gè)老和尚,正在給小和尚講故事呢!故事是什么呢?……’”
利用函數(shù)編寫一個(gè)斐波那契數(shù)列
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368
斐波那契數(shù)列就是前面給兩個(gè)數(shù)相加得到后面一個(gè)數(shù),依次往后
代碼如下
#!/usr/bin/env python # _*_ coding: utf-8 _*_ def Counter(n1, n2): if n1 > 10000: # 當(dāng)要計(jì)算的值大于10000就退出 return print("Counter:", n1) # 輸出當(dāng)前計(jì)算到那個(gè)值了 n3 = n1 + n2 # 第一個(gè)值加上第一個(gè)值等于第三個(gè)值 Counter(n2, n3) # 調(diào)用計(jì)數(shù)器函數(shù),此時(shí)第一個(gè)值是調(diào)用函數(shù)傳過來的最后一個(gè)值,而第二個(gè)值是計(jì)算出來的第三個(gè)值 Counter(0, 1) # 調(diào)用計(jì)數(shù)器函數(shù)
輸出結(jié)果
/usr/bin/python3.5 /home/ansheng/Documents/PycharmProjects/blogcodes/斐波那契.py Counter: 0 Counter: 1 Counter: 1 Counter: 2 Counter: 3 Counter: 5 Counter: 8 Counter: 13 Counter: 21 Counter: 34 Counter: 55 Counter: 89 Counter: 144 Counter: 233 Counter: 377 Counter: 610 Counter: 987 Counter: 1597 Counter: 2584 Counter: 4181 Counter: 6765 Process finished with exit code 0
利用遞歸獲取斐波那契數(shù)列中的第10個(gè)數(shù),并將該值返回給調(diào)用者
代碼:
#!/usr/bin/env python # _*_ coding: utf-8 _*_ def Counter(Index, Start, End): print("第%d次計(jì)算,第一個(gè)數(shù)字是%d,第二個(gè)數(shù)字是%d" % (Index, Start, End)) if Index == 10: # 如果要計(jì)算的值是10就退出 return Start N = Start + End # N等于第一個(gè)數(shù)加上第二個(gè)數(shù) Number = Counter(Index + 1, End, N) # 繼續(xù)調(diào)用計(jì)數(shù)器函數(shù),End相當(dāng)與傳給函數(shù)的第一個(gè)數(shù),N是傳給函數(shù)的第二個(gè)數(shù) return Number result = Counter(1, 0, 1) print("得出的數(shù)字是:", result)
輸出結(jié)果
/usr/bin/python3.5 /home/ansheng/Documents/PycharmProjects/blogcodes/遞歸.py 第1次計(jì)算,第一個(gè)數(shù)字是0,第二個(gè)數(shù)字是1 第2次計(jì)算,第一個(gè)數(shù)字是1,第二個(gè)數(shù)字是1 第3次計(jì)算,第一個(gè)數(shù)字是1,第二個(gè)數(shù)字是2 第4次計(jì)算,第一個(gè)數(shù)字是2,第二個(gè)數(shù)字是3 第5次計(jì)算,第一個(gè)數(shù)字是3,第二個(gè)數(shù)字是5 第6次計(jì)算,第一個(gè)數(shù)字是5,第二個(gè)數(shù)字是8 第7次計(jì)算,第一個(gè)數(shù)字是8,第二個(gè)數(shù)字是13 第8次計(jì)算,第一個(gè)數(shù)字是13,第二個(gè)數(shù)字是21 第9次計(jì)算,第一個(gè)數(shù)字是21,第二個(gè)數(shù)字是34 第10次計(jì)算,第一個(gè)數(shù)字是34,第二個(gè)數(shù)字是55 得出的數(shù)字是: 34 Process finished with exit code 0
原文鏈接
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/38417.html
摘要:列表同字符串一樣都是有序的,因?yàn)樗麄兌伎梢酝ㄟ^切片和索引進(jìn)行數(shù)據(jù)訪問,且列表的的是可變的。 列表(list)同字符串一樣都是有序的,因?yàn)樗麄兌伎梢酝ㄟ^切片和索引進(jìn)行數(shù)據(jù)訪問,且列表的的是可變的。 創(chuàng)建列表的幾種方法 第一種 name_list = [Python, PHP, JAVA] 第二種 name_list = list([Python, PHP, JAVA]) 創(chuàng)建一個(gè)空列表 ...
摘要:在繼續(xù)下面的文章之前我們先來瀏覽一下為我們提供的幾種運(yùn)算符,定義兩個(gè)變量,分別是和,的值是,的值是。 在繼續(xù)下面的文章之前我們先來瀏覽一下Python為我們提供的幾種運(yùn)算符,定義兩個(gè)變量,分別是a和b,a的值是10,b的值是20。 算術(shù)運(yùn)算符 運(yùn)算符 描述 實(shí)例 + 加,兩個(gè)對象相加 a+b=30 - 減,兩個(gè)對象相減,可能會得到負(fù)數(shù) a-b=-10 * 乘,兩數(shù)相稱...
摘要:元組和列表的為唯一區(qū)別就是列表可以更改,元組不可以更改,其他功能與列表一樣創(chuàng)建元組的兩種方法第一種第二種如果元祖內(nèi)只有一個(gè)元素,那么需要加上一個(gè)逗號,否則就變成字符串了。 元組(tuple)和列表的為唯一區(qū)別就是列表可以更改,元組不可以更改,其他功能與列表一樣 創(chuàng)建元組的兩種方法 第一種 ages = (11, 22, 33, 44, 55) 第二種 ages = tuple((11,...
摘要:字典在基本的數(shù)據(jù)類型中使用頻率也是相當(dāng)高的,而且它的訪問方式是通過鍵來獲取到對應(yīng)的值,當(dāng)然存儲的方式也是鍵值對了,屬于可變類型。 字典(dict)在基本的數(shù)據(jù)類型中使用頻率也是相當(dāng)高的,而且它的訪問方式是通過鍵來獲取到對應(yīng)的值,當(dāng)然存儲的方式也是鍵值對了,屬于可變類型。 創(chuàng)建字典的兩種方式 第一種 >>> dic = {k1:123,k2:456} >>> dic {k1: 123, ...
摘要:目前提供的字符串格式化方式有兩種百分號方式方式這兩種方式在和中都適用,百分號方式是一直內(nèi)置存在的,方式為近期才出來的。 This PEP proposes a new system for built-in string formatting operations, intended as a replacement for the existing % string formatti...
閱讀 3614·2020-12-03 17:42
閱讀 2780·2019-08-30 15:54
閱讀 2241·2019-08-30 15:44
閱讀 585·2019-08-30 14:08
閱讀 983·2019-08-30 14:00
閱讀 1118·2019-08-30 13:46
閱讀 2801·2019-08-29 18:33
閱讀 2951·2019-08-29 14:11