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

Python条件运算符’if else’不等于’和’或’,第1张

概述参见英文答案 > Does Python have a ternary conditional operator?                                    27个 我认为下面两个函数的结果是一样的,但事实并非如此. def fib2(n): return n and n < 2 or fib2(n-1) + fib2(n-2)def fib3(m): re 参见英文答案 > Does Python have a ternary conditional operator?                                    27个
我认为下面两个函数的结果是一样的,但事实并非如此.

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 retprint fib2(4)def fib3(m):    ret = m if m < 2 else fib3(m-1) + fib3(m-2)    print "fib3({}) = {}".format(m,ret)    return retprint 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 aprint fib4(0)print fib4(1)print fib4(2)print fib4(3)print fib4(4)print fib4(1000)

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

总结

以上是内存溢出为你收集整理的Python条件运算符’if else’不等于’和’或’全部内容,希望文章能够帮你解决Python条件运算符’if else’不等于’和’或’所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/1197452.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-03
下一篇2022-06-03

发表评论

登录后才能评论

评论列表(0条)

    保存