use*_*535 -2 python recursion sequence

我有这个顺序:
2, 10, 10, 130, 130, 130, 130, 130, ..., a??=130, 17290, ...
Run Code Online (Sandbox Code Playgroud)
我的函数从开始工作n > 3,否则a?, a?, a? = 2, 2, 2它应该返回a?, a?, a?, a? = 2, 10, 10, 130.
这是我到目前为止所拥有的:
def s(n):
if n == 1:
return 2
elif math.floor(math.sqrt(n)) == math.floor(math.sqrt(n-1)):
return s(n-1)
else:
return s(n-1) ** 2 + 3 * s(n-1)
Run Code Online (Sandbox Code Playgroud)
它出什么问题了?
请注意,我正在尝试返回序列的第n个项而不是整个序列,直到n.
这是一个棘手的递归,因为它没有提到一个ñ -1任何地方像极简单的递归定义做.这意味着您s(n-1)的代码中不应包含任何引用.
在该等式中,floor(sqrt(n))是参数到一个Ñ.因为你调用你的函数s,所以你应该传递floor(sqrt(n))给它的递归调用s.
def s(n):
if n == 1:
return 2
else:
x = s(math.floor(math.sqrt(n)))
return x**2 + 3*x
Run Code Online (Sandbox Code Playgroud)
由于一个⌊√ Ñ ⌋示出了两次,上面的代码计算一次,并调用该值x.