python中的简单递归函数

2024-05-23 18:44:17 发布

您现在位置:Python中文网/ 问答频道 /正文

非常新的编码,尤其是功能。我试图创建一个递归函数,它从n == 1开始,将n除以2,然后继续将下一个数字除以2。数学方法是fn = fn-1/2。代码如下

def half(n):
    return half(n/2)
half(1)

但我不断得到“超过最大递归深度”

请帮忙


Tags: 代码功能编码returndef数字fnhalf
3条回答

您需要设置递归的限制,不能显示无限 类似于when if n>;0.00001:返回一半(n/2)否则返回n

您可以用与数学公式几乎相同的方法定义函数,但需要某种方法来停止递归(即,不需要递归来获得答案的基本情况)

例如,如果已知f(0)的结果为1,则这是基本情况,您可以在不再次调用函数的情况下返回答案:

def f(n):
    if n==0: return 1         # base case f(0)  > 1 (stops recursion)
    else:    return f(n-1)/2  # recursion fn=fn-1/2

print(f(10)) # 0.0009765625   # this happens to be 1/2^10

您在Python中遇到了递归限制。如果Python没有停止在最大递归深度,那么函数将导致无限递归

相关问题 更多 >