deffib2(n ) :
returnnandn2orfib2(n-1 ) fib2(n-2 ) )。
deffib3(m ) :
返回MIF m2 else fib3(m-1 ) fib3(m-2 ) )。
参数值为4时,fib2的输出为7,fib3的输出为3。 为什么会发生这样的事呢?
我不知道这个。
我的Python版本是2.7.9,操作系统是操作系统osX 10.11.1
解决方法:
再冗长一点,试着写下你的函数:
deffib2(n ) :
ret=nandn2orfib2(n-1 ) fib2(n-2 ) )。
print'fib2({}={} ).format,ret ) )。
返回
打印ib2 (4) )。
deffib3(m ) :
ret=mifm2elsefib3(m-1 ) fib3(m-2 ) ) )。
print'fib3{}={}}.format{m,ret
返回
打印ib3 (4) )。
fib2似乎要向数字中添加布尔值。 所以是不正确的。 fib3只处理数字,是正确的。 但请注意,这不是计算斐波那契数的推荐方法。 如果尝试使用FiB3(1000 ),将无限执行。 建议从0和1开始,而不是使用递归计算Fibonacci计数。
我为你写了一个计算Fibonacci数#n的短函数:
deffib4(n ) :
a=0
b=1
forIinrange(1,n 1 ) :
a,b=(b,a b )
return a
打印ib4 (0)。
打印ib4 (1) )。
打印ib4 (2) )。
打印ib4 (3) )。
打印ib4 (4) )。
打印IB4(1000 ) )。
请注意,它也适用于n==1000。
标签: python、conditional-operator、python-2-7
资料来源: https://codeday.me/bug/2019 07 06/1397962.html