0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

文系学生のプログラミング学習8日目ーPythonで再帰をやってみたー

Last updated at Posted at 2019-07-29

今回はPythonで再帰をやってみました。
再帰による回文判定とFractal図形を描きました。

回文判定

再帰をつかった回文判定です。

def palindrom(string):
    if len(string) < 2:
     return("true")
    elif string[0] == string[len(string)-1]:
     return(palindrom(string[1:len(string)-1]))
    else:
     return("false")

if len(string) < 2 といのがbase caseといって最も基本的なパターンになります。
それ以降がrecursive caseで再帰をしていく部分になります。
1文字の場合もちろんtrue。複数文字の時は最初の文字と最後の文字が同じ場合、再帰をつかって2番目と最後から2番目を比較します。
初めは再帰が何なのか分かりにくかったので、自分の書いた再帰のコードが上手く動くととてもうれしいです。

Fractal図形

再帰をつかって同じ図形を何個も連続して描くことが出来ます。上手くいくと模様のようになってとてもきれいです。

import turtle as t

def fractal(n, size):
    if n == 1:
        t.forward(size)
    else:
        t.left(45)
        fractal(n - 1, size)
        t.right(90)
        fractal(n - 1, size)
        t.left(45)

はじめにturtleという図形を描くものをimportします。
nは図形のレベルみたいなもので、1回ごとにレベルを1つずつさげていき、n=1になるとスクリプトが止まります。

n=3の場合以下のような図形が出来ます。

image.png

これをn=7にすると以下のようになります。

image.png

n=3の図形がいくつも組み合わさっていることが分かります。
この図形の他にも雪の結晶のような図形も作成できます。

自分のやったことをブログで伝えるのって本当に難しいということを最近実感します。
頭では分かっていても、言葉で書くって難しいですね。

終わり

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?