Python递归序列相关代码
我正在尝试制作一个代码,根据以下公式生成数字 T[n]=1+T[n-1]*2Python递归序列相关代码,python,recursion,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
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
我希望如果我使用这个递归程序,我能找出数组中数字的具体顺序,
e、 g.如果我想找出数组中的第三个数字,应该是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
解决这个问题的一种方法(虽然不是大多数python实现…)
你的程序不是递归的。好吧,这确实是一个递归序列,但不是一个。维基百科说:斐波那契序列的特点是,前两个之后的每个数字都是前两个数字的总和。你可以在循环之前设置n=0
,如果i==0:
,则删除。他们明确表示他们在寻找递归解决方案,这是问题的迭代解,我发现如何得到指定项的编号,但我不知道如何得到这些编号的列表。在您的一些示例部分中,T(i)表示范围(1,10)内的i,如何在pyscripter上显示此内容?例如,您可以说范围(1,10)内的i的:print(T(i))
# 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]))