【发布时间】:2014-07-26 06:15:07
【问题描述】:
我正在练习递归,并尝试模拟 pow(x,y)。
这是我的代码:
def power(x,y):
for y in range(1,y):
return x * power(x,y)
为什么会这样:
力量(2,3) 回溯(最近一次通话最后): 文件“”,第 1 行,在 电源(2,3) 文件“C:/Python34/1.py”,第 3 行,上电 返回 x * 幂(x,y) TypeError: *: 'int' and 'NoneType' 不支持的操作数类型
【问题讨论】:
-
提示:
for是一个纯粹的迭代构造,因此它不是递归函数的关键。当您使用递归函数时,通常会使用稍微不同的参数再次调用它 - 在您的情况下,使用不同的y。你还需要一个“基本情况”——当你到达最内层的递归时会发生什么?你会返回什么? -
您正在使用循环和递归 - 您需要选择一个!
-
@Brionius:除非你想循环和
yield递归,这(不像在循环中返回)是有意义的,并且在3.3之前的Python中经常需要模拟yield from......但是是的,否则,完全正确。
标签: python