这个问题与如何编写适合序列的递归函数有关,而不是以三角形形式打印星星。
我正在尝试编写一个 python 函数,该函数使用 Pollard Rho 方法来查找整数的因式分解。在这一点上,我坚持尝试编写一个小函数来找到 f(n) 这样的:
情况 0 到 4 的行为如下:
我想我真的很困惑如何设置基本情况并让函数调用自身来计算递归函数的请求迭代。下面是一个甚至对 f(0) 都不起作用的尝试:
def f(xn):
if xn == 0:
answer = 2
return answer
else:
x = xn
f(0) = 2
f(xn) = f(x - 1)^2 + 1
return f(xn)
当我尝试时,这种尝试只会导致错误“SyntaxError: can't assign to function call”:
print f(0)
任何人都可以帮助编写这样一个递归函数来匹配我的代码尝试上图中所描述的情况 0 到 4 的行为吗?
请您参考如下方法:
你几乎成功了!请注意,求幂不是python中的运算符^,而是**。
def f(xn):
if xn == 0:
answer = 2
return answer
else:
answer = f(xn - 1)**2 + 1
return answer
分配给函数调用是代码中的语法错误。相反,您应该调用该函数并将结果分配给局部变量(在此处称为 answer)。
以更简单的方式编写相同的函数:
def f(xn):
return (1 + f(xn-1)**2) if xn else 2
