2024-05-23 18:44:17 发布
网友
非常新的编码,尤其是功能。我试图创建一个递归函数,它从n == 1开始,将n除以2,然后继续将下一个数字除以2。数学方法是fn = fn-1/2。代码如下
n == 1
n
fn = fn-1/2
def half(n): return half(n/2) half(1)
但我不断得到“超过最大递归深度”
请帮忙
您需要设置递归的限制,不能显示无限 类似于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没有停止在最大递归深度,那么函数将导致无限递归
您需要设置递归的限制,不能显示无限 类似于when if n>;0.00001:返回一半(n/2)否则返回n
您可以用与数学公式几乎相同的方法定义函数,但需要某种方法来停止递归(即,不需要递归来获得答案的基本情况)
例如,如果已知f(0)的结果为1,则这是基本情况,您可以在不再次调用函数的情况下返回答案:
您在Python中遇到了递归限制。如果Python没有停止在最大递归深度,那么函数将导致无限递归
相关问题 更多 >
编程相关推荐