我在使用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)。它不会像我想要的那样打印input 1,2,3,4 ... x
的值。
答案 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(看起来正确,因为函数正在向原始数字的绝对值添加正数)