質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.59%

これの処理の順番を番号で書いて教えてください

解決済

回答 3

投稿

  • 評価
  • クリップ 0
  • VIEW 1,364
退会済みユーザー

退会済みユーザー

from turtle import *

def branch(length):  # 1
    if length < 10:  # 2
        return       # 2'
    forward(length)  # 3
    left(30)         # 4
    branch(length/2) # 5
    right(60)        # 6
    branch(length/2) # 7
    left(30)         # 8
    forward(-length) # 9

branch(100)
input()
これの処理の順番を最後まで番号で書いて教えてください
またその際にbranchの引数lengthには何の数値が入っているのかも書いてくれるとありがたいです

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

checkベストアンサー

+2

こんなんでいかがでしょうか。
各行、後ろの値が length の値です。
#1 100
#2 100
#3 100
#4 100
#5 100
#1 50
#2 50
#3 50
#4 50
#5 50
#1 25
#2 25
#3 25
#4 25
#5 25
#1 12
#2 12
#3 12
#4 12
#5 12
#1 6
#2 6
#2' 6
#6 12
#7 12
#1 6
#2 6
#2' 6
#8 12
#9 12
#6 25
#7 25
#1 12
#2 12
#3 12
#4 12
#5 12
#1 6
#2 6
#2' 6
#6 12
#7 12
#1 6
#2 6
#2' 6
#8 12
#9 12
#8 25
#9 25
#6 50
#7 50
#1 25
#2 25
#3 25
#4 25
#5 25
#1 12
#2 12
#3 12
#4 12
#5 12
#1 6
#2 6
#2' 6
#6 12
#7 12
#1 6
#2 6
#2' 6
#8 12
#9 12
#6 25
#7 25
#1 12
#2 12
#3 12
#4 12
#5 12
#1 6
#2 6
#2' 6
#6 12
#7 12
#1 6
#2 6
#2' 6
#8 12
#9 12
#8 25
#9 25
#8 50
#9 50
#6 100
#7 100
#1 50
#2 50
#3 50
#4 50
#5 50
#1 25
#2 25
#3 25
#4 25
#5 25
#1 12
#2 12
#3 12
#4 12
#5 12
#1 6
#2 6
#2' 6
#6 12
#7 12
#1 6
#2 6
#2' 6
#8 12
#9 12
#6 25
#7 25
#1 12
#2 12
#3 12
#4 12
#5 12
#1 6
#2 6
#2' 6
#6 12
#7 12
#1 6
#2 6
#2' 6
#8 12
#9 12
#8 25
#9 25
#6 50
#7 50
#1 25
#2 25
#3 25
#4 25
#5 25
#1 12
#2 12
#3 12
#4 12
#5 12
#1 6
#2 6
#2' 6
#6 12
#7 12
#1 6
#2 6
#2' 6
#8 12
#9 12
#6 25
#7 25
#1 12
#2 12
#3 12
#4 12
#5 12
#1 6
#2 6
#2' 6
#6 12
#7 12
#1 6
#2 6
#2' 6
#8 12
#9 12
#8 25
#9 25
#8 50
#9 50
#8 100
#9 100

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

ruby の trace という機能を使ってみました。
- Ruby 2.2.0 リファレンスマニュアル > ライブラリ一覧 > tracerライブラリ http://rurema.clear-code.com/2.2.0/library/tracer.html

コードをすこし変更します。
def forward(length) end
def left(length) end
def right(length) end

def branch(length) # 1  TRACE
  puts "                                       #    branch(#{length}) TRACE"
  if length < 10   # 2  TRACE
    return         # 2' TRACE
  end
  forward(length)  # 3  TRACE
  left(30)         # 4  TRACE
  branch(length/2) # 5  TRACE
  right(60)        # 6  TRACE
  branch(length/2) # 7  TRACE
  left(30)         # 8  TRACE
  forward(-length) # 9  TRACE
end

branch(100)

こままま ruby -rtracer でじっこうすると余計なものがたくさんでるので
出力結果をパイプでつないで加工しました。
$ ruby -rtracer 1.rb | grep TRACE | grep -v puts | cut -b40-
RACE
# 1  TRACE
#    branch(100) TRACE
# 2  TRACE
 # 3  TRACE
 # 4  TRACE
 # 5  TRACE
# 1  TRACE
#    branch(50) TRACE
# 2  TRACE
 # 3  TRACE
 # 4  TRACE
 # 5  TRACE
# 1  TRACE
#    branch(25) TRACE
# 2  TRACE
 # 3  TRACE
 # 4  TRACE
 # 5  TRACE
# 1  TRACE
#    branch(12) TRACE
# 2  TRACE
 # 3  TRACE
 # 4  TRACE
 # 5  TRACE
# 1  TRACE
#    branch(6) TRACE
# 2  TRACE
# 2' TRACE
# 2' TRACE
 # 6  TRACE
 # 7  TRACE
# 1  TRACE
#    branch(6) TRACE
# 2  TRACE
# 2' TRACE
# 2' TRACE
 # 8  TRACE
 # 9  TRACE
 # 6  TRACE
 # 7  TRACE
# 1  TRACE
#    branch(12) TRACE
# 2  TRACE
 # 3  TRACE
 # 4  TRACE
 # 5  TRACE
# 1  TRACE
#    branch(6) TRACE
# 2  TRACE
# 2' TRACE
# 2' TRACE
 # 6  TRACE
 # 7  TRACE
# 1  TRACE
#    branch(6) TRACE
# 2  TRACE
# 2' TRACE
# 2' TRACE
 # 8  TRACE
 # 9  TRACE
 # 8  TRACE
 # 9  TRACE
 # 6  TRACE
 # 7  TRACE
# 1  TRACE
#    branch(25) TRACE
# 2  TRACE
 # 3  TRACE
 # 4  TRACE
 # 5  TRACE
# 1  TRACE
#    branch(12) TRACE
# 2  TRACE
 # 3  TRACE
 # 4  TRACE
 # 5  TRACE
# 1  TRACE
#    branch(6) TRACE
# 2  TRACE
# 2' TRACE
# 2' TRACE
 # 6  TRACE
 # 7  TRACE
# 1  TRACE
#    branch(6) TRACE
# 2  TRACE
# 2' TRACE
# 2' TRACE
 # 8  TRACE
 # 9  TRACE
 # 6  TRACE
 # 7  TRACE
# 1  TRACE
#    branch(12) TRACE
# 2  TRACE
 # 3  TRACE
 # 4  TRACE
 # 5  TRACE
# 1  TRACE
#    branch(6) TRACE
# 2  TRACE
# 2' TRACE
# 2' TRACE
 # 6  TRACE
 # 7  TRACE
# 1  TRACE
#    branch(6) TRACE
# 2  TRACE
# 2' TRACE
# 2' TRACE
 # 8  TRACE
 # 9  TRACE
 # 8  TRACE
 # 9  TRACE
 # 8  TRACE
 # 9  TRACE
 # 6  TRACE
 # 7  TRACE
# 1  TRACE
#    branch(50) TRACE
# 2  TRACE
 # 3  TRACE
 # 4  TRACE
 # 5  TRACE
# 1  TRACE
#    branch(25) TRACE
# 2  TRACE
 # 3  TRACE
 # 4  TRACE
 # 5  TRACE
# 1  TRACE
#    branch(12) TRACE
# 2  TRACE
 # 3  TRACE
 # 4  TRACE
 # 5  TRACE
# 1  TRACE
#    branch(6) TRACE
# 2  TRACE
# 2' TRACE
# 2' TRACE
 # 6  TRACE
 # 7  TRACE
# 1  TRACE
#    branch(6) TRACE
# 2  TRACE
# 2' TRACE
# 2' TRACE
 # 8  TRACE
 # 9  TRACE
 # 6  TRACE
 # 7  TRACE
# 1  TRACE
#    branch(12) TRACE
# 2  TRACE
 # 3  TRACE
 # 4  TRACE
 # 5  TRACE
# 1  TRACE
#    branch(6) TRACE
# 2  TRACE
# 2' TRACE
# 2' TRACE
 # 6  TRACE
 # 7  TRACE
# 1  TRACE
#    branch(6) TRACE
# 2  TRACE
# 2' TRACE
# 2' TRACE
 # 8  TRACE
 # 9  TRACE
 # 8  TRACE
 # 9  TRACE
 # 6  TRACE
 # 7  TRACE
# 1  TRACE
#    branch(25) TRACE
# 2  TRACE
 # 3  TRACE
 # 4  TRACE
 # 5  TRACE
# 1  TRACE
#    branch(12) TRACE
# 2  TRACE
 # 3  TRACE
 # 4  TRACE
 # 5  TRACE
# 1  TRACE
#    branch(6) TRACE
# 2  TRACE
# 2' TRACE
# 2' TRACE
 # 6  TRACE
 # 7  TRACE
# 1  TRACE
#    branch(6) TRACE
# 2  TRACE
# 2' TRACE
# 2' TRACE
 # 8  TRACE
 # 9  TRACE
 # 6  TRACE
 # 7  TRACE
# 1  TRACE
#    branch(12) TRACE
# 2  TRACE
 # 3  TRACE
 # 4  TRACE
 # 5  TRACE
# 1  TRACE
#    branch(6) TRACE
# 2  TRACE
# 2' TRACE
# 2' TRACE
 # 6  TRACE
 # 7  TRACE
# 1  TRACE
#    branch(6) TRACE
# 2  TRACE
# 2' TRACE
# 2' TRACE
 # 8  TRACE
 # 9  TRACE
 # 8  TRACE
 # 9  TRACE
 # 8  TRACE
 # 9  TRACE
 # 8  TRACE
 # 9  TRACE

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

わかりやすいよう再帰に合わせてインデントしてみました
# 最初の呼び出し
branch(100)

#1 branch(length=100)
#2 100 < 10 は False 処理継続
#3 forward(100)
#4 left(30)
#5 branch(100/2)
    #1 branch(length=50)
    #2 50 < 10 は False 処理継続
    #3 forward(50)
    #4 left(30)
    #5 branch(50/2)
        #1 branch(length=25)
        #2 25 < 10 は False 処理継続
        #3 forward(25)
        #4 left(30)
        #5 branch(25/2)
            #1 branch(length=12.5)
            #2 12.5 < 10 は False 処理継続
            #3 forward(12.5)
            #4 left(30)
            #5 branch(12.5/2)
                #1 branch(length=6.25)
                #2 6.25 < 10 は True なので return (呼び出し元へ戻る)
            #6 right(60)
            #7 branch(12.5/2)
                #1 branch(length=6.25)
                #2 6.25 < 10 は True なので return (呼び出し元へ戻る)
            #8 left(30)
            #9 forward(-12.5)
        #6 right(60)
        #7 branch(25/2)
            #1 branch(length=12.5)
            #2 12.5 < 10 は False 処理継続
            #3 forward(12.5)
            #4 left(30)
            #5 branch(12.5/2)
                #1 branch(length=6.25)
                #2 6.25 < 10 は True なので return (呼び出し元へ戻る)
            #6 right(60)
            #7 branch(12.5/2)
                #1 branch(length=6.25)
                #2 6.25 < 10 は True なので return (呼び出し元へ戻る)
            #8 left(30)
            #9 forward(-12.5)
        #8 left(30)
        #9 forward(-25)
    #6 right(60)
    #7 branch(50/2)
        #1 branch(length=25)
        #2 25 < 10 は False 処理継続
        #3 forward(25)
        #4 left(30)
        #5 branch(25/2)
            #1 branch(length=12.5)
            #2 12.5 < 10 は False 処理継続
            #3 forward(12.5)
            #4 left(30)
            #5 branch(12.5/2)
                #1 branch(length=6.25)
                #2 6.25 < 10 は True なので return (呼び出し元へ戻る)
            #6 right(60)
            #7 branch(12.5/2)
                #1 branch(length=6.25)
                #2 6.25 < 10 は True なので return (呼び出し元へ戻る)
            #8 left(30)
            #9 forward(-12.5)
        #6 right(60)
        #7 branch(25/2)
            #1 branch(length=12.5)
            #2 12.5 < 10 は False 処理継続
            #3 forward(12.5)
            #4 left(30)
            #5 branch(12.5/2)
                #1 branch(length=6.25)
                #2 6.25 < 10 は True なので return (呼び出し元へ戻る)
            #6 right(60)
            #7 branch(12.5/2)
                #1 branch(length=6.25)
                #2 6.25 < 10 は True なので return (呼び出し元へ戻る)
            #8 left(30)
            #9 forward(-12.5)
        #8 left(30)
        #9 forward(-25)
    #8 left(30)
    #9 forward(-50)
#6 right(60)
#7 branch(100/2)
    #-上にある「#1 branch(length=50)」から「#9 forward(-50)」までと全く同じなので割愛-
#8 left(30)
#9 forward(-100)

input()

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.59%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る