您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息

Python全栈之路系列之递归

2024/5/10 9:36:07发布7次查看
所谓递归其实就是函数本身调用函数,直到满足指定条件之后一层层退出函数, 例如
从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?“从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?‘从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?……’”
利用函数编写一个斐波那契数列
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/env python # _*_ coding: utf-8 _*_ def counter(n1, n2):     if n1 > 10000:  # 当要计算的值大于10000就退出         return     print(counter:, n1)  # 输出当前计算到那个值了     n3 = n1 + n2  # 第一个值加上第一个值等于第三个值     counter(n2, n3)  # 调用计数器函数,此时第一个值是调用函数传过来的最后一个值,而第二个值是计算出来的第三个值 counter(0, 1)  # 调用计数器函数
输出结果
/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
利用递归获取斐波那契数列中的第10个数,并将该值返回给调用者
代码:
#!/usr/bin/env python # _*_ coding: utf-8 _*_ def counter(index, start, end):     print(第%d次计算,第一个数字是%d,第二个数字是%d % (index, start, end))     if index == 10:  # 如果要计算的值是10就退出         return start     n = start + end  # n等于第一个数加上第二个数     number = counter(index + 1, end, n)  # 继续调用计数器函数,end相当与传给函数的第一个数,n是传给函数的第二个数     return number result = 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 得出的数字是: 34 process finished with exit code 0
原文链接
所谓递归其实就是函数本身调用函数,直到满足指定条件之后一层层退出函数, 例如
从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?“从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?‘从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?……’”
利用函数编写一个斐波那契数列
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/env python # _*_ coding: utf-8 _*_ def counter(n1, n2):     if n1 > 10000:  # 当要计算的值大于10000就退出         return     print(counter:, n1)  # 输出当前计算到那个值了     n3 = n1 + n2  # 第一个值加上第一个值等于第三个值     counter(n2, n3)  # 调用计数器函数,此时第一个值是调用函数传过来的最后一个值,而第二个值是计算出来的第三个值 counter(0, 1)  # 调用计数器函数
输出结果
/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
利用递归获取斐波那契数列中的第10个数,并将该值返回给调用者
代码:
#!/usr/bin/env python # _*_ coding: utf-8 _*_ def counter(index, start, end):     print(第%d次计算,第一个数字是%d,第二个数字是%d % (index, start, end))     if index == 10:  # 如果要计算的值是10就退出         return start     n = start + end  # n等于第一个数加上第二个数     number = counter(index + 1, end, n)  # 继续调用计数器函数,end相当与传给函数的第一个数,n是传给函数的第二个数     return number result = 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 得出的数字是: 34 process finished with exit code 0
更多python全栈之路系列之递归 。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录