python - 请问这个程序的执行原理是什么呢?
迷茫
迷茫 2017-04-17 15:17:13
[Python讨论组]
def exp(a,b):
    if b ==1:
        return a
    else:
        return a*exp(a,b-1)

print exp(2,3)
...8        
print exp(2,4)
...16

对于 return aexp(a,b-1) 这一步中,比如执行exp(2,3)是返回的是:2(2*2)吗?
可是exp明明是一个函数呀,也并没有明确是进行内部的乘法运算,有点迷糊了。(提问有点无知,望见谅)

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(1)
黄舟

这是递归,也就是函数自己调用自己,是一种把问题分隔简化为相似的小问题来求解的方法

其实对于结果,你单步调试一下就知道了

exp(2,3)
会被化解为
2 * exp(2, 2)
然后再被化解为
2 * 2 * exp(2, 1)
然后再被化解为(这个时候b == 1,所以走第一个if分支)
2 * 2 * 2

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号