def f(x):
if x == 1:
return 1
elif x > 1:
z = ((x**(x-1))/(x-1))
b = z + f(x-1)
return b
如何获得带小数点的数字?我尝试过使用float,但这也不起作用。例如,如果我做f(4)我得到28,但我想要像28.833这样的东西。有什么建议吗?
答案 0 :(得分:1)
如果您使用的是python2,则int/int
的结果会被截断为int
如果这是问题,那么调用f(4.0)
就足够了,因为x-1
等将浮动,因此强制浮点除法
或者你可以把
from __future__ import division
作为你模块的第一行
>>> def f(x):
... if x == 1:
... return 1
... elif x > 1:
... z = ((x**(x-1))/(x-1))
... b = z + f(x-1)
... return b
...
>>> f(4)
28
>>> f(4.0)
28.833333333333332
答案 1 :(得分:0)
强制你的int浮动
e.g。 float(3)/2 = 1.5