这是正确的递归函数吗

时间:2018-11-15 14:56:11

标签: python-3.x

能不能请您解释一下为什么会给我错误:*:'NoneType'和'NoneType'不受支持的操作数类型

def func(a, b):

  if a >= 0 and b > 0 and isinstance(b,int) :

   if b == 1 :
    return a
   elif b > 1 and b%2 == 1 :
    return  a * func(a,(b-1)/2)*func(a,(b-1)/2)

   else :
    return func(a,b/2) * func(a, b/2)

1 个答案:

答案 0 :(得分:1)

我假设您使用的是Python 3x,其中运算符/的结果始终是float的值,而不是int

假设您调用func(5, 4),然后程序将调用func(5, 2.0) * func(5, 2.0)。它不满足条件isinstance(b, int),并且您没有为此情况提供return语句,因此func(5, 2.0) * func(5, 2.0)等于None * None

如果要除法运算符提供int,请使用//代替/