为什么递归序列不能正常工作?

时间:2013-04-17 22:54:01

标签: python recursion python-2.7

我是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.08839到{{1} })并且偶数n的值为负。解决方案适用于3.29e+18。对于其他n=1n定义中的(1/n)似乎会被忽略。

有人可以帮助我吗?

非常感谢!

1 个答案:

答案 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