Python递归序列相关代码

时间:2018-05-03 11:31:26

标签: python recursion

我正在尝试根据以下公式创建一个生成数字的代码...

T [n] = 1 + T [n-1] * 2

numList = []
numLisst.append (1)
#Begins with a term 1.

def numSequence ():
    while True:
        for i in range (1,12):
            #Temporally set numbers from 1 to 12
            numList[i] == 1+(numList[i-1]*2)
            break
    print (numList)

numSequence()

首先,这会带来一个错误,列表索引超出索引

我希望看到这段代码产生斐波那契序列,例如,

1,3,7,15,31,63,127,......

我希望如果我使用这个递归程序,我将能够找出数组中数字的特定顺序, 例如如果我想在数组中找到第3个数字,那么应该是7还是15(这取决于我将如何设置它)

2 个答案:

答案 0 :(得分:3)

假设您的基本案例为T(1) = 1

,您的公式的递归实现将如下所示
def T(n):
    if n == 1:
        return 1
    else:
        return 1 + T(n-1)*2

一些例子

>>> [T(i) for i in range(1,10)]
[1, 3, 7, 15, 31, 63, 127, 255, 511]
>>> T(15)
32767

答案 1 :(得分:0)

解决这个问题的一种方法(不是大多数Pythonic实现,但是......)

# T[n] = 1 + T[n-1] * 2

def nextFibonachi(n,i):
    n = 1 + n*2
    print(str(i)+": "+str(n))
    return n,i

fibArr = []
for i in range(0,100):
    if i == 0:
        n = 0
    n,i = nextFibonachi(n, i)
    fibArr.append(n)

print(fibArr)

m = 10
print("\n"+str(m)+": "+str(fibArr[m]))