给定一个整数x,该函数应计算并返回以下内容:
f(x) = 1/2 + 2/3 + ... + x/x+1
在我的主要内容中,我必须显示f(x)的x值,从1到10,包括在内。
def recursive(x):
if x == 0:
return 0
else:
return (x / (x + 1)) + recursive(x-1)
def main():
print(recursive(10))
main()
不确定我做错了什么。我对递归感到陌生,在使用迭代这么长时间之后我就不太了解它。
答案 0 :(得分:2)
您缺少x + 1的括号。可能是一个错字。
你的功能应该在下面,
def recursive(x):
if x == 0:
return 0
else:
return x / (x + 1) + recursive(x-1)
答案 1 :(得分:0)
还有一个关于数据类型的修正,目前它返回0我们必须将它转换为浮动
def recursive(x):
if x == 0:
return 0
else:
return (float(x) / (x + 1)) + recursive(x-1)
def main(): print(recursive(10))
答案 2 :(得分:0)
首先,你需要在分母中使用括号。现在你正在计算(x/x) + 1 + recursive(x-1)
def recursive(x):
if x == 0:
return 0
else:
return x/(x+1) + recursive(x-1)
其次,您应该编写单独的代码,以便将f(x)
从1
打印到10
。 print(recursive(10))
只打印recursive(10)
返回的值,大约为7.98
。你想要的是一个打印出总和的直观表示的函数。
s = '1/2'
for i in range(2, 11):
s += ' + {}/{}'.format(i, i+1)
print(s)
答案 3 :(得分:0)
Python还有一个非常有用的“生成器”函数 - yield,可用于开发实际为每个调用返回单个值的递归函数:
def factor(x: int):
for a in range(x, 0, -1):
yield((a-1)/a)
# Can be retrieved as a list or summed
l = [f for f in factor(10)]
s = sum(factor(10))
print("Result of {} is {}".format(l, s))
[0.9,0.8888888888888888,0.875,0.8571428571428571,0.8333333333333334,0.8,0.75,0.66666666666666666,0.5,0.0]的结果是7.071031746031746
答案 4 :(得分:0)
我想我误解了这个问题,并找到了正确的答案:
def recursive(x):
if x == 0:
return 0
else:
return (float(x) / (x + 1)) + recursive(x-1)
def main():
print(recursive(1))
print(recursive(2))
print(recursive(3))
print(recursive(4))
print(recursive(5))
print(recursive(6))
print(recursive(7))
print(recursive(8))
print(recursive(9))
print(recursive(10))
main()
我在考虑给定一个递归函数它应该循环并重复自己(derp)我想我可以做一个for循环和一个计数器,但后来我会进入迭代而不是递归。