我是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=5n0=1n1=30y0=log(5/6)=0.182322运行此脚本,则解决方案非常高(从0.088393.29e+18 ),并且即使对于。 该解决方案适用于n=1 对于其他n ,似乎忽略了yn(n)定义中的(1/n)

有人能帮我吗?

非常感谢!

===============>>#1 票数:1 已采纳

n可能是整数,因此当n大于1时, 1/n返回0

>>> 1/1
1
>>> 1/2
0
>>> 1.0/2
0.5

为了确保您正在使用浮点除法,请在计算1/n任何位置将1更改为1.0

(1.0/n)

或者将n转换为float

  ask by Marvin Kropp translate from so

未解决问题?本站智能推荐: