请问这个程序的执行原理是什么呢?

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明明是一个函数呀,也并没有明确是进行内部的乘法运算,有点迷糊了。(提问有点无知,望见谅)

阅读 2.1k
1 个回答

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

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题