繁体   English   中英

Python递归序列相关代码

[英]Python recursive sequence related code

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

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,15,31,63,127,....

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

假设您的基本情况为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

解决此问题的一种方法(尽管不是大多数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]))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM