2024-04-25 07:45:01 发布
网友
def recursion(x): if x == 0: return 0 else: return x << 1 + recursion(x - 1) print(recursion(3)) # 393216 print(3 << 1) # 6 print(2 << 1) # 4 print(1 << 1) # 2
在我看来,递归函数的输出应该是:12(6+4+2) 为什么不是这样?我得说“393216”比我预期的数字“12”稍大一些。在
我的期望:
合计=12
运算符优先级。位移位的优先级低于加法/减法(see in docs)。所以你需要
def recursion(x): if x == 0: return 0 else: return (x << 1) + recursion(x - 1)
当前,您的函数被解释为
原因是运算符优先。位移位运算符的优先级低于算术运算符。在
默认情况下,x << 1 + recursion(x - 1)被假定为x << (1 + recursion(x - 1))。在
x << 1 + recursion(x - 1)
x << (1 + recursion(x - 1))
可以通过使用括号重写默认优先级来解决此问题。在
def recursion(x): if x == 0: return 0 else: return (x << 1) + recursion(x - 1) print(recursion(3)) # 12
运算符优先级。位移位的优先级低于加法/减法(see in docs)。所以你需要
当前,您的函数被解释为
^{pr2}$原因是运算符优先。位移位运算符的优先级低于算术运算符。在
默认情况下,
x << 1 + recursion(x - 1)
被假定为x << (1 + recursion(x - 1))
。在可以通过使用括号重写默认优先级来解决此问题。在
相关问题 更多 >
编程相关推荐