小甲鱼零基础python知识点总结(第22课:函数:递归是神马)
本帖最后由 永远的渣滓 于 2020-4-8 10:56 编辑小甲鱼零基础python知识点总结(第22课)
概念:递归就是函数调用自身的行为
一.设置递归深度:
使用sys模块:
inport sys
sys.setrecursionlimit(深度)
二.迭代与递归:
1.迭代:
def factorial(n):
result = n
for i in range(1,n):
result *= i
return result
number = int(input('请输入一个整数:'))
result = factorial(number)
2.递归:
def factorial(n):
if n == 1:
return 1
else:
return n * factorial(n-1)
number = int(input('请输入一个整数:'))
result = factorial(number)
print("%d的阶乘是:%d" % (number, result))
三.递归的优缺点:
1.优点:
(1)递归的基本思想是把规模大的问题转变成规模小的问题组合,从而简化问题的解决难度(例如汉诺塔游戏)。
(2)有些问题使用递归使得代码简洁易懂(例如你可以很容易的写出前中后序的二叉树遍历的递归算法,但如果要写出相应的非递归算法就不是初学者可以做到的了。)
2.缺点:
(1)由于递归的原理是函数调用自个儿,所以一旦大量的调用函数本身空间和时间消耗是“奢侈的”(当然法拉利也奢侈,但还是很多人趋之若鹜)。
(2)初学者很容易错误的设置了返回条件,导致递归代码无休止调用,最终栈溢出,程序崩溃。
拍婶 发表于 2020-4-7 14:56
怎么有鱼币???
首贴有{:10_256:} 我竟然没抢到{:10_266:} 我也想要{:10_266:} fsf359 发表于 2020-4-7 15:45
我也想要
订阅一下 https://fishc.com.cn/forum.php?mod=collection&action=view&ctid=1689&fromop=my
print('求订阅'*9999999999999999999999999999999999999999999999999999999999999) 下次更新提醒我哦~~~{:10_297:} 冰河星云 发表于 2020-4-7 17:34
下次更新提醒我哦~~~
ok 永远的渣滓 发表于 2020-4-7 16:13
订阅一下 https://fishc.com.cn/forum.php?mod=collection&action=view&ctid=1689&fromop=my
print('求 ...
>>> print('求订阅'*9999999999999999999999999999999999999999999999999999999999999)
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
print('求订阅'*9999999999999999999999999999999999999999999999999999999999999)
OverflowError: cannot fit 'int' into an index-sized integer
所以,这是不可能的(小声) wuqramy 发表于 2020-4-8 10:39
所以,这是不可能的(小声)
你...你{:10_266:} 永远的渣滓 发表于 2020-4-8 10:49
你...你
开个玩笑
页:
[1]