我是Python的新手,我正在尝试打印递归序列的解决方案:
#Input sequence variables
a = float(raw_input("type in a = "))
n0 = int(raw_input("type in n_0 = "))
n1 = int(raw_input("type in n_1 = "))
y0 = float(raw_input("type in y_0 = "))
#Define function y_n (forward iteration)
def yn(n):
if (n==0):
return y0
else:
return (1/n)-a*yn(n-1)
#backward iteration
def yn_back(n):
return (1/a)*((1/n)-yn(n-1))
if(n1>=n0):
for i in range(n0,n1+1):
print(yn(i))
else:
for i in range(n0,n1+1):
print(yn_back(i))
但如果我使用a=5
,n0=1
,n1=30
和y0=log(5/6)=0.182322
运行此脚本,则解决方案非常高(从0.08839
到{{1} })并且偶数n的值为负。解决方案适用于3.29e+18
。对于其他n=1
,n
定义中的(1/n)
似乎会被忽略。
有人可以帮助我吗?
非常感谢!
答案 0 :(得分:1)
n
可能是一个整数,因此1/n
返回0
n
大于1:
>>> 1/1
1
>>> 1/2
0
>>> 1.0/2
0.5
要确保您使用的是浮点除法,请在计算1
的任何位置将1.0
更改为1/n
:
(1.0/n)
或将n
转换为float
。