协助递归

时间:2015-11-14 22:44:19

标签: python recursion

这是我想要弄清楚的。我真的想要了解,或者是否有一个好的资源可以帮助那些也不仅仅是一个答案。

考虑{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)

2 个答案:

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

递归很容易:基本情况,一般情况。