鱼C论坛

 找回密码
 立即注册
查看: 2964|回复: 7

[已解决]python关于程序解释的问题

[复制链接]
发表于 2016-6-11 20:37:14 | 显示全部楼层 |阅读模式
1鱼币
有大神可以帮忙解释一下这个程序吗?
最佳答案
2016-6-11 20:37:15
这是一个用递归实现幂运算的函数,虽然我递归也是学的糊里糊涂,但这个最简单的还是可以解释下的
有效的递归的实现需要两个条件:1是 递归调用——例子中的if语句部分,2是最小可能性(递归如何结束,否则就会无穷递归,程序崩溃)——例子中else语句部分
if y:  #当y不为0时,执行if下的语句
return x*power(x,y-1) #递归的实现部分,当y不等于0,一直调用自身
对于power(2,3)即 return 2*power(2,2)  
而power(2,2)部分再次调用power函数return2* power(2,1)
power(2,1)再次调用power函数,return2*power(2,0)
power(2,0)再次调用函数,执行else return 1
将上面的return结果反向依次代入,就是return 2*2*2*1
QQ截图20160611203721.png

最佳答案

查看完整内容

这是一个用递归实现幂运算的函数,虽然我递归也是学的糊里糊涂,但这个最简单的还是可以解释下的 有效的递归的实现需要两个条件:1是 递归调用——例子中的if语句部分,2是最小可能性(递归如何结束,否则就会无穷递归,程序崩溃)——例子中else语句部分 if y: #当y不为0时,执行if下的语句 return x*power(x,y-1) #递归的实现部分,当y不等于0,一直调用自身 对于power(2,3)即 return 2*power(2,2) 而power(2,2 ...
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-6-11 20:37:15 | 显示全部楼层    本楼为最佳答案   
这是一个用递归实现幂运算的函数,虽然我递归也是学的糊里糊涂,但这个最简单的还是可以解释下的
有效的递归的实现需要两个条件:1是 递归调用——例子中的if语句部分,2是最小可能性(递归如何结束,否则就会无穷递归,程序崩溃)——例子中else语句部分
if y:  #当y不为0时,执行if下的语句
return x*power(x,y-1) #递归的实现部分,当y不等于0,一直调用自身
对于power(2,3)即 return 2*power(2,2)  
而power(2,2)部分再次调用power函数return2* power(2,1)
power(2,1)再次调用power函数,return2*power(2,0)
power(2,0)再次调用函数,执行else return 1
将上面的return结果反向依次代入,就是return 2*2*2*1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-6-12 11:57:27 | 显示全部楼层
递归,x的y次方,y不为0就一直执行啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-6-12 18:16:39 | 显示全部楼层
x的y次方的递归表达方式,递归的终点是y=0的时候返回1,你人脑模拟一下电脑就知道:
power(x,0)返回1;
power(x,1)返回x*power(x,0)也就是返回x*1也就是返回x**1;
power(x,2)返回x*power(x,1)也就是返回x*x也就是返回x**2....依此类推
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-6-12 20:38:56 | 显示全部楼层
我也想知道 我的哥
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-6-13 10:14:05 | 显示全部楼层
再仔细看看小甲鱼视频中的函数递归调用。
本函数中 if y: 相当于 if y <>0:
以power(2, 3)为例说明
power(2, 3) = 2 * power(2, 3 - 1) = 2 * 2 * power(2,  2 - 1) = 2 * 2 * 2 * power(2,  1 - 1) = 2 * 2 * 2 * 1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-6-19 07:31:04 | 显示全部楼层
看见各位鱼友都好热情呀,真高兴
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-11-23 08:40:21 | 显示全部楼层
递归求x的y次方
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-21 07:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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