Python之递归,,所谓递归其实就是函数


所谓递归其实就是函数本身调用函数,直到满足指定条件之后一层层退出函数, 例如

从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?“从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?‘从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?……’”


利用函数编写一个斐波那契数列

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

斐波那契数列就是前面给两个数相加得到后面一个数,依次往后

代码如下

#!/usr/bin/envpython#_*_coding:utf-8_*_defCounter(n1,n2):ifn1>10000:#当要计算的值大于10000就退出returnprint("Counter:",n1)#输出当前计算到那个值了n3=n1+n2#第一个值加上第一个值等于第三个值Counter(n2,n3)#调用计数器函数,此时第一个值是调用函数传过来的最后一个值,而第二个值是计算出来的第三个值Counter(0,1)#调用计数器函数

输出结果

/usr/bin/python3.5/home/ansheng/Documents/PycharmProjects/blogcodes/斐波那契.pyCounter:0Counter:1Counter:1Counter:2Counter:3Counter:5Counter:8Counter:13Counter:21Counter:34Counter:55Counter:89Counter:144Counter:233Counter:377Counter:610Counter:987Counter:1597Counter:2584Counter:4181Counter:6765Processfinishedwithexitcode0

利用递归获取斐波那契数列中的第10个数,并将该值返回给调用者

代码:

#!/usr/bin/envpython#_*_coding:utf-8_*_defCounter(Index,Start,End):print("第%d次计算,第一个数字是%d,第二个数字是%d"%(Index,Start,End))ifIndex==10:#如果要计算的值是10就退出returnStartN=Start+End#N等于第一个数加上第二个数Number=Counter(Index+1,End,N)#继续调用计数器函数,End相当与传给函数的第一个数,N是传给函数的第二个数returnNumberresult=Counter(1,0,1)print("得出的数字是:",result)

输出结果

/usr/bin/python3.5/home/ansheng/Documents/PycharmProjects/blogcodes/递归.py第1次计算,第一个数字是0,第二个数字是1第2次计算,第一个数字是1,第二个数字是1第3次计算,第一个数字是1,第二个数字是2第4次计算,第一个数字是2,第二个数字是3第5次计算,第一个数字是3,第二个数字是5第6次计算,第一个数字是5,第二个数字是8第7次计算,第一个数字是8,第二个数字是13第8次计算,第一个数字是13,第二个数字是21第9次计算,第一个数字是21,第二个数字是34第10次计算,第一个数字是34,第二个数字是55得出的数字是:34Processfinishedwithexitcode0


本文出自 “一盏烛光” 博客,谢绝转载!

Python之递归

评论关闭