答案中需要小数 - Python递归

时间:2013-11-19 02:56:11

标签: python recursion

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这样的东西。有什么建议吗?

2 个答案:

答案 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