Python 递归平方根函数不迭代
我在用Python迭代函数时遇到问题 我正在尝试输出以下值: 以下是节目:Python 递归平方根函数不迭代,python,iteration,Python,Iteration,我在用Python迭代函数时遇到问题 我正在尝试输出以下值: 以下是节目: def calculate(x): if x == 1: return 1.414 elif x >= 2: a = (calculate(x-1)**2 + (1/(calculate(x-1)**2)))**(0.5) return (a) calculate (x-1) 出于某种原因,它只计算给定x的输入的输出(a)。
def calculate(x):
if x == 1:
return 1.414
elif x >= 2:
a = (calculate(x-1)**2 + (1/(calculate(x-1)**2)))**(0.5)
return (a)
calculate (x-1)
出于某种原因,它只计算给定x的输入的输出(a)。它不会打印
输入1,2,3,4的值。。。x
就像我试图做的那样。纯粹从代码的角度来看,下面的代码运行-
def calculate(x):
if x == 1:
print(str(x) + " :: 1.414")
return 1.414
elif x >= 2:
a = (calculate(x-1)**2 + (1/(calculate(x-1)**2)))**(0.5)
print(str(x) + " :: " + str(a))
return a
else:
print("Error")
return None
但是,递归看起来不正确。请参阅下面实现函数的方法-
def cal(x):
return ((x**2) + (1/(x**2)))**0.5
对于x=2,递归方法返回-1.5809955868425996,直接方法返回-2.0615528128088303(这看起来很正确,因为函数将正数添加到原始数的绝对值上)您的
计算(x-1)
永远不会被调用,因为在调用之前使用return
返回控制流1.414
不是1@Moinuddin对不起,我是初学者,我只是在学习。那么,在这种情况下,使用print(a)而不是返回a更好吗?你在作弊:你的平方根实现使用了x**0.5
。。。哪一个是平方根…@DeepSpace我想我没有说清楚;但是我的程序是针对一个不同的递归函数,使用变量的平方根。我正在构建的函数是为sqrt(x^2+(1/(x^2))Hi Aritesh构建的。谢谢你的建议。x=2产生1.5801的原因纯粹是因为它依赖于x=1,因此是递归。我在问题中发布的公式表明x2依赖于x1。我刚刚有一个问题,就是在递归中打印x的所有值。