永远的渣滓 发表于 2020-4-7 14:52:33

小甲鱼零基础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:57:05

拍婶 发表于 2020-4-7 14:56
怎么有鱼币???

首贴有{:10_256:}

乘号 发表于 2020-4-7 15:44:03

我竟然没抢到{:10_266:}

fsf359 发表于 2020-4-7 15:45:25

我也想要{:10_266:}

永远的渣滓 发表于 2020-4-7 16:13:49

fsf359 发表于 2020-4-7 15:45
我也想要

订阅一下 https://fishc.com.cn/forum.php?mod=collection&action=view&ctid=1689&fromop=my
print('求订阅'*9999999999999999999999999999999999999999999999999999999999999)

冰河星云 发表于 2020-4-7 17:34:03

下次更新提醒我哦~~~{:10_297:}

永远的渣滓 发表于 2020-4-7 17:53:46

冰河星云 发表于 2020-4-7 17:34
下次更新提醒我哦~~~

ok

wuqramy 发表于 2020-4-8 10:39:17

永远的渣滓 发表于 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
所以,这是不可能的(小声)

永远的渣滓 发表于 2020-4-8 10:49:50

wuqramy 发表于 2020-4-8 10:39
所以,这是不可能的(小声)

你...你{:10_266:}

wuqramy 发表于 2020-4-8 10:51:02

永远的渣滓 发表于 2020-4-8 10:49
你...你

开个玩笑
页: [1]
查看完整版本: 小甲鱼零基础python知识点总结(第22课:函数:递归是神马)