中易网

python中递归的问题

答案:3  悬赏:80  
解决时间 2021-03-12 20:13
我就是转不过弯来了,函数调用自身那块,思来想去就是别扭,云里旦缉测垦爻旧诧驯超沫雾里的。 就是那个最简单的阶乘问题。谁能帮我把代码拆开好好讲讲? 问题补充:一楼,其实我不明白的就是这句 return n*f(n-1) 假如这里的N=6的话旦缉测垦爻旧诧驯超沫是不是就变成了这样 return 6*(6-1)*(6-1-1)*(6-1-1-1)*(6-1-1-1-1)·····这样的话当N到了0的时候不是在第一个IF那里就卡住了吗(直接返回1了。)上面的return 6*(6-1)*(6-1-1)*(6-1-1-1)*(6-1-1-1-1)·····不就都废了~
最佳答案
展开的过程是这样的
return n*f(n-1)
因为f(n-1)return的是(n-1)f(n-2)所以你才能用(n-1)f(n-2)替换f(n-1)展开成
retrun n*(n-1)f(n-2)
依次类推
...
return n*...*2*f(1)
return n*...*2*1*f(0)
return n*...*2*1*1
所以里面的return在你展开的过程中就已经执行过了
全部回答
递归方法有些时候是不太好理解,不过递归的意义就是把解决问题n变成解决n-1的问题,最终变成解决1个问题。 假设有n个盘子,从上到下依次编号,最下面的盘子编号是大写的n。托盘分别是x,y,z。要把所有盘子从x移动到z。 前面几行代码就不解释了,很容易理解。 第五行,如果只有一个盘子,就直接从x移动到z。 第七行,如果不只一个盘子,先把上面n-1个盘子从x移动到y。 第八行,再把n号盘子从x移动到z。 第九行,再把刚才那n-1个盘子从y移动到z。 至于那n-1个盘子是怎么移动的,再次调用这个函数,把问题变成n-2个盘子加1个盘子的问题。
他的函数里面不是有个if条件判断的么,当n=0的时候就会返回1,而不是继续调用了。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
韩国女团ioi pick me 音乐银行
风水中在房子中央顶放的天元,或放在地下的地
安阳哪有卖锡纸的?
我姓吴给我女儿启明
魔兽6.1的兽王猎人pvp选择什么属性好?暴力精
vivoy613的手机怎么跟自拍杆连接
淘宝问题货运单找不到
八一餐馆地址在什么地方,想过去办事
系统自带的天气软件怎么不显示在主屏幕上了?
男朋友在网上花1000在yy频道买了一个皇马,每
洗脸扑上黑点越来越多怎么回事?已经这样出现
石井我想知道这个在什么地方
佛山三水好帮手工资待遇怎么样,我面试的PQC
宝来胎压监测激活了刹车保警灯亮了
当你被别人在你背后说你坏话时,你该怎么办?
推荐资讯
近代以来西方资本主义国家的政治领导体制采用
怎样解决笔记本电脑键盘输入字母变成数字
关于word,如何去掉下图中右边的灰色区域
合金元素对钢热处理有什么影响?
宏源饭店我想知道这个在什么地方
南厚滋沟村在什么地方啊,我要过去处理事情
蛇泡草是指的果还是草
上海大众中配多少钱
鸿洲饭店在什么地方啊,我要过去处理事情
御茗轩茶叶霸州总店在什么地方啊,我要过去处
古田门诊在哪里啊,我有事要去这个地方
烂的组词是什么
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?