鱼C论坛

 找回密码
 立即注册
查看: 1824|回复: 6

新人每日一问,神马是递归,听了打瞌睡

[复制链接]
发表于 2022-3-26 19:29:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  • 什么是递归,听了打瞌睡
  • 有没有大佬生动形象地讲一讲的?
  • 后续用的多吗?

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-3-26 19:41:43 | 显示全部楼层
你打开一个文件夹,下面有很多子文件夹和文件。你把这些子文件夹和文件找出来的过程就叫递归。
1. 已知条件,你知道当前文件夹的名字,其后的你都不知道。
2. 你进入当前文件夹后,你可以看到它下面的文件夹和文件,但是这些文件夹下面的内容你还是不知道,所以你要一层一层的进入,然后返回,这样一遍一遍的进入,再一遍一遍返回;再一遍一遍的进入另一个文件夹,再一遍一遍返回的过程。

所以递归有2大条件:
1. 函数里面要调用函数本身
2. 结束条件。(什么时候返回)

递归在某些情况下是唯一的选择。用得多。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-26 19:48:48 | 显示全部楼层
2022326_194814.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-26 20:24:22 | 显示全部楼层
自己调用自己
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-30 15:45:29 | 显示全部楼层
本帖最后由 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-30 23:03:45 | 显示全部楼层
递归  -->  有递   有归
上个月我也问过      希望我理解的代码对你有用
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
"""
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-2 16:24:54 | 显示全部楼层
本帖最后由 Stubborn 于 2022-4-2 16:30 编辑

一楼的例子很形象,在举个例子:并且为用函数表达出来
一个快递员坐电梯收包裹,也许这个电梯有很多层,但是这个快递只负责收到第七层的包裹,他在第一层收到一个包裹,第二次收到两个包裹,一次类推,收到第七层。编写函数,计算他会收到多少个包裹
def elevator(n=1): # 从1层开始收包裹
    if n == 7: # 他只收到第第七层
        return 7 #最后一层7个包裹
    return n + elevator(n+1)  # 1层+ 下一层的包裹

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-7 00:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表