python3 不等于_Python条件运算符’if else’不等于’和’或’

本文探讨了在Python 2.7.9中,两个不同的斐波那契数列计算函数fib2和fib3在处理参数为4时产生不同结果的原因。fib2函数由于尝试将数字与布尔值相加导致错误,而fib3函数则正确处理数字。作者还提供了一个更高效的斐波那契数列计算函数fib4,避免了递归带来的问题,并能有效处理大数值。
摘要由CSDN通过智能技术生成

def fib2(n):

return n and n < 2 or fib2(n-1) + fib2(n-2)

def fib3(m):

return m if m < 2 else fib3(m-1) + fib3(m-2)

当参数值为4时,fib2的输出为7,fib3的输出为3.为什么会出现这种情况?

我不知道这个.

我的Python版本是2.7.9,os是osX 10.11.1

解决方法:

我试着更冗长,并写下你的函数:

def fib2(n):

ret = n and n < 2 or fib2(n-1) + fib2(n-2)

print "fib2({}) = {}".format(n, ret)

return ret

print fib2(4)

def fib3(m):

ret = m if m < 2 else fib3(m-1) + fib3(m-2)

print "fib3({}) = {}".format(m, ret)

return ret

print fib3(4)

似乎fib2试图为数字添加布尔值,这就是为什么它不正确. fib3只处理数字并且是正确的.但请注意,这不是推荐的计算斐波纳契数的方法!如果您尝试使用fib3(1000),它将无限运行.最好从0和1开始,而不是使用递归来计算Fibonacci数.

我写了一个简短的函数,为你计算Fibonacci数#n:

def fib4(n):

a = 0

b = 1

for i in range(1, n + 1):

a, b = (b, a + b)

return a

print fib4(0)

print fib4(1)

print fib4(2)

print fib4(3)

print fib4(4)

print fib4(1000)

请注意,它也适用于n == 1000.

标签:python,conditional-operator,python-2-7

来源: https://codeday.me/bug/20190706/1397962.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值