例:
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: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
>>> wjjaisyr 发表于 2022-2-13 21:13
一共多少讲啊~我以为完结了~还没学够 哈哈
是049讲(不是49讲),说明至少有100讲 要让递归正常工作,必须要有一个结束条件,并且每次调用都将向着这个结束条件推进。 卡打 滴滴滴~打卡{:10_298:} 每天进步一点点 阶乘的迭代与递归计算
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 49讲最后总结result*=1的1应该改成i 打卡 嘀嘀嘀{:10_298:} 听不懂{:10_269:}
页:
[1]