新人每日一问,神马是递归,听了打瞌睡
[*]什么是递归,听了打瞌睡{:5_104:}
[*]有没有大佬生动形象地讲一讲的?
[*]后续用的多吗?
你打开一个文件夹,下面有很多子文件夹和文件。你把这些子文件夹和文件找出来的过程就叫递归。
1. 已知条件,你知道当前文件夹的名字,其后的你都不知道。
2. 你进入当前文件夹后,你可以看到它下面的文件夹和文件,但是这些文件夹下面的内容你还是不知道,所以你要一层一层的进入,然后返回,这样一遍一遍的进入,再一遍一遍返回;再一遍一遍的进入另一个文件夹,再一遍一遍返回的过程。
所以递归有2大条件:
1. 函数里面要调用函数本身
2. 结束条件。(什么时候返回)
递归在某些情况下是唯一的选择。用得多。 自己调用自己 本帖最后由 SJQ007 于 2022-4-6 14:22 编辑
比如一个任务:SUM(n)=1+2+3+...+n,现在n=100,让你算
你觉得SUM(100)太难了,复制了一个自己(调用自己)叫复制人1,让他算SUM(99),知道了SUM(99),你只需要SUM(99)+100就得到SUM(100)了
复制人1觉得SUM(99)还是太难,又造了一个复制人2,让他算SUM(98),他的SUM(99)就好算了
以此类推,复制人98的任务是算SUM(2)=1+2,他觉得很简单,向复制人97返回了结果3
复制人97拿到了SUM(2),加个3,结果是6,又向复制人96汇报了
以此类推,复制人1拿到了SUM(99),汇报给你,你再加个100,就做完了
代码就是:
def SUM(n)
if n==2:
return 3
else:
return SUM(n-1)+n
递归-->有递 有归
上个月我也问过 希望我理解的代码对你有用
def power(x, y):
if y == 0:
print(f"y == 0 , y : {y} , x : {x}")
return 1
else:
print(f"递 : y : {y} , x : {x}")
"""
递 : y : 2 , x : 4
递 : y : 1 , x : 4
"""
y = power(x, y-1) * x
print(f"归 : y : {y} , x : {x}")
"""
归 : y : 4 , x : 4
归 : y : 16 , x : 4
"""
return y
print(power(y=2,x=4))
"""
16
""" 本帖最后由 Stubborn 于 2022-4-2 16:30 编辑
一楼的例子很形象,在举个例子:并且为用函数表达出来
一个快递员坐电梯收包裹,也许这个电梯有很多层,但是这个快递只负责收到第七层的包裹,他在第一层收到一个包裹,第二次收到两个包裹,一次类推,收到第七层。编写函数,计算他会收到多少个包裹
def elevator(n=1): # 从1层开始收包裹
if n == 7: # 他只收到第第七层
return 7 #最后一层7个包裹
return n + elevator(n+1)# 1层+ 下一层的包裹
页:
[1]