这是我想要弄清楚的。我真的想要了解,或者是否有一个好的资源可以帮助那些也不仅仅是一个答案。
考虑{x(n)}
和x(1) = 1
为n≥1定义的序列x(n+1) = 2*x(n) + 1
。编写一个计算并返回x(N)的递归函数recSeq(N)
。使用此功能确定x(100)并打印输出。
这是我能够打印一个号码的最后一个,虽然它不是正确的号码。
if N ==0:
return 1
elif N >= 1:
return 3
else:
return recSeq((2*N) +1)
如果我执行以下操作,它会继续运行所有回复错误
if N ==0:
return 1
elif N == 1:
return 3
else:
return recSeq((2*N) +1)
答案 0 :(得分:0)
如果你被要求x(n),你需要做的是评估x(n-1),以便计算2 * x(n-1)+1。要评估x(n-1),你需要评估x(n-2)等。唯一的例外是x(1)= 1.
检查n >=0
以阻止程序陷入无限循环也是个好主意。
def recSeq(n):
if n <=0:
raise ValueError('n must be >= 1')
elif n == 1:
return 1
else:
return(2*recSeq(n-1)+1)
答案 1 :(得分:0)
解决方案:
def recSeq(n): return 1 if n==1 else 2*recSeq(n-1)+1
递归很容易:基本情况,一般情况。