31.関数での再帰呼び出しの使用


31.1再帰呼び出しの使用


再帰呼び出しとは?
関数で関数自体を呼び出す方法を再帰呼び出しと呼ぶ.
アルゴリズムによれば、再帰呼び出しで実装されるコードは、重複文よりも直感的であることが多い.
def hello():
    print('Hello, world!')
    hello() #hello 함수 안에서 hello를 재귀호출
 
hello() #hello 호출



<실행결과>
Hello, world!
Hello, world!
Hello, world!
...(생략)
Traceback (most recent call last):
Hello, world!印刷を続行中、エラーが発生しました.
実行したばかりのコードは下図のように表示できます.

hello関数を呼び出すと、hello関数のhello関数を呼び出すコードが再帰的に実行されます.

31.1.1再帰呼び出しでの終了条件の作成


再帰呼び出しを使用するには、終了条件を作成する必要があります.
def hello(count):
    if count == 0:    # 종료 조건을 만듦. count가 0이면 종료!
        return
    
    print('Hello, world!', count)
    
    count -= 1      # count를 1 감소시킨 뒤
    hello(count)    # 다시 hello에 넣음
 
hello(5)    # hello 함수 호출



<실행 결과>
Hello, world! 5
Hello, world! 4
Hello, world! 3
Hello, world! 2
Hello, world! 1
hello(5)が呼び出されるため、hello関数でcountは5に入ります.その後、ハローワールド!出力5後、countは4に小さくなります.最後にhello関数を再度呼び出します.
count=0は、繰り返しを終了するために終了条件を作成します.
以下に示すように、画像として表示します.