modalsoul’s blog

これは“失敗”と呼べるかもしれないが、ぼくは“学習体験”と呼びたい

任意の桁数のゾロ目を生成する

n = 1のとき、f(n) = 1
n = 2のとき、f(n) = 11
n = 3のとき、f(n) = 111
n = kのとき、f(n) = 11...11 (k桁の1のゾロ目)

となるf(n)の実装を考える

数式で表すと { \displaystyle
f_n = \sum_{i=0}^{n} 10^{i}
}


ぱっと思いついた再帰を使うパターン

def fn(n, acc=0):
  return acc if(n == 0) else fn(n-1, acc*10+1)

部分和{ \displaystyle10^{i}} の総和だから、

再帰を使わないパターン

sum(10**k for k in range(n))

任意の値xをかければ、xの任意の桁数のゾロ目が生成できる