能不能请您解释一下为什么会给我错误:*:'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)
答案 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
,请使用//
代替/