递归平方根函数不迭代

时间:2018-03-27 09:59:37

标签: python iteration

我在使用Python迭代函数时遇到了麻烦。

我正在尝试输出以下值:

enter image description here

这是该计划:

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)。它不会像我想要的那样打印input 1,2,3,4 ... x的值。

1 个答案:

答案 0 :(得分:0)

纯粹从代码角度来看,下面的代码运行 -

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(看起来正确,因为函数正在向原始数字的绝对值添加正数)