小甲鱼 发表于 2022-2-12 23:54:35

已有 25 人购买  本主题需向作者支付 5 鱼币 才能浏览 购买主题

wjjaisyr 发表于 2022-2-13 21:13:20

一共多少讲啊~我以为完结了~还没学够 哈哈

yixinwenxin 发表于 2022-2-18 22:10:00

递归被封装好的死循环

小古比鱼 发表于 2022-4-10 10:02:20

“普通程序员用迭代,天才程序员用递归。”所谓递归,就是函数调用自身的过程。使用递归必须要有判断和结束条件,并且每次调用都要向着这个结束条件去推进,否则递归过程将永远进行下去,没完没了,导致程序失控。视频以求阶乘和斐波那契数列为例,对比了迭代和递归两种算法的代码量与执行效率,结果发现:使用递归固然优雅,但在数据量较大时效率很低。由此可见,尺有所短,寸有所长;数据量小时用递归,数据量大时用迭代!

fishcyou 发表于 2022-5-4 11:20:51

所谓递归,就是函数调用自身的过程。

例:

def funC():
    print("I Love Python")
    funC()

   
funC()
>>>
I Love Python
I Love Python
...
# 会一直重复,使用 Ctrl+C 强制终止执行

使用递归必须要有结束条件,并且每次调用都要向着这个结束条件去推进。

我们可以对比下迭代和递归两种方式:

# 求正整数的阶乘结果
# 迭代写法
def factIter(n):
    result = n
    for i in range(1, n):
      result *= i
    return result

# 递归写法   
def factRecur(n):
    if n == 1:
      return 1
    else:
      return n * factRecur(n-1)

factIter(5)
>>>
120

factRecur(5)
>>>
120

factIter(10)
>>>
3628800

factRecur(10)
>>>
3628800

递归很适合用在类似如 1 + 2 +3 或者 100 * 99 * 98 这种比较有规律的运算上。

hveagle 发表于 2022-8-7 11:28:39

本帖最后由 hveagle 于 2022-8-7 11:37 编辑

递归:
def r:
    print('r')
    r()

>>> r()
r
r
r
r
r
r
r
r
r
r
#请赶紧退出IDLE或按CTRL + C !
化解方法:
def s(times):
    while times:
      print('s')
      times -= 1

>>> s(50)
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
>>>

hveagle 发表于 2022-8-26 12:44:56

wjjaisyr 发表于 2022-2-13 21:13
一共多少讲啊~我以为完结了~还没学够 哈哈

是049讲(不是49讲),说明至少有100讲

炎凉来寻 发表于 2022-9-8 12:05:27

要让递归正常工作,必须要有一个结束条件,并且每次调用都将向着这个结束条件推进。

chenjinchao 发表于 2022-10-10 16:20:31

卡打

墨墨在努力吖 发表于 2022-10-15 21:15:16

滴滴滴~打卡{:10_298:}

lymbwx 发表于 2022-11-2 17:42:24

每天进步一点点

migu_sm1 发表于 2022-11-9 15:13:18

阶乘的迭代与递归计算
def fact1(n):
    r = n
    for i in range(1,n):
      r *= 1
    return r

def fact1(n):
    r = n
    for i in range(1,n):
      r *= i
    return r

fact1(1)
1
fact1(2)
2
fact1(3)
6
fact1(5)
120
def fact2(n):
    r = 1
    for i in range(n):
      r *= i+1
    return r

fact2(1)
1
fact2(2)
2
fact2(3)
6
fact2(5)
120
def factr(n):
    if n == 1:#结束递归
      return 1
    else:
      return n* factr(n-1)

   
factr(5)
120
factr(10)
3628800

游离的季节 发表于 2022-11-18 09:11:34

49讲最后总结result*=1的1应该改成i

andyleesh 发表于 2023-1-3 20:59:33

打卡

呱呱呱i 发表于 2023-1-8 18:35:26

嘀嘀嘀{:10_298:}

chen_1123 发表于 2023-11-30 17:41:43

听不懂{:10_269:}
页: [1]
查看完整版本: 第049讲:函数(IX)- 递归