0

非負の整数 n を入力として取り、文字 L、R、F でエンコードされたタートル命令を返す再帰関数を実装するように求められました。ここで、L は左に 45 度回転することを意味し、R は右に 45 度回転することを意味し、F は前進することを意味します。

追加情報 i : すべての非負の整数 n>0 について、レビー曲線はレビー曲線L(n)で定義できますL(n-1)。レビー曲線L(0)はただの直線です。

    usage:
    >>> lev(0)
    'F'
    >>> lev(1)
    'LFRRFL'

私はこれに非常に慣れていないため、開始方法がわかりません。

これまでのところ、私は得た:

    from turtle import Screen, Turtle
    def lev(n):
        # base case
        if n ==0:
           return 'F'
        # recursive case
        else:
            return lev(n-1)

ここでいくつかの良い指針が必要です。

4

3 に答える 3

5

Levy CL システムには単一のルールしかないため、単一の置換メソッドを使用して結果の文字列を構築するのは簡単です。

def lev(n):
    if n == 0:
        return "F"
    else:
        symbols = lev(n-1)
        return symbols.replace("F", "LFRRFL")

for i in range(4):
    print lev(i)

結果:

F
LFRRFL
LLFRRFLRRLFRRFLL
LLLFRRFLRRLFRRFLLRRLLFRRFLRRLFRRFLLL

図の各直線が 90 度の角度で接続された 2 本の小さな線に置き換えられると想像することで、この置き換えを視覚化できます。そのようです:

ここに画像の説明を入力

于 2013-05-30T19:54:22.097 に答える