繁体   English   中英

如何为这个 function 实现生成器?

[英]How to implement generator for this function?

对于 function a(0) = 3, a(n) = 2*a(n-1) -1 ,生成器应该是这样的:

def p():
    b = 3
    while True:
        yield b
        b = 2 * b -1

那么对于 function c(1) = 9, c(n) = 9*c(n-1) + 10**(n-1)- c(n-1) ,如何为这个 function 编写生成器?

对于该序列,您将 c(1) 的值为 9,使用 c(1) 计算 c(0) 的值,结果为 1,然后编写一个生成器,首先生成 c(0),然后 c( 1),然后对于每个下一个值,应用公式,得到下一个值并产生它,最后用下一个值 b1 替换前一个值 b0 以继续序列。


def generate_seq():
    b0 = 1
    b1 = 9
    n=2
    yield b0
    yield b1
    while True:
        b1 = 9*b1 + 10**(n-1) - b1
        yield b1
        b0 = b1
        n += 1
        
seq = generate_seq()
for i in range(10):
    print(next(seq))
        

OUTPUT:

1
9
82
756
7048
66384
631072
6048576
58388608
567108864

与你原来的相似,只是 10 的额外幂:

def p():
    c = 1
    pow10 = 1
    while True:
        yield c
        c = 8*c + pow10
        pow10 *= 10

在线试用!

暂无
暂无

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

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