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)。

我在用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)。它不会打印
输入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的所有值。