Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ 再帰 | 再帰とラムダ関数
Python関数チュートリアル
セクション 5.  1
single

single

再帰

メニューを表示するにはスワイプしてください

Note
定義

再帰関数は、問題をより小さく単純な部分に分割して解決するために自分自身を呼び出す関数。

再帰の主な要素:

  • 基本ケース:再帰を停止する条件;
  • 再帰ケース:関数がより単純な入力で自分自身を呼び出す部分。

なぜ再帰を使うのか?

一部の問題は、より小さな部分問題として自然に表現できる。再帰は、関数が自分自身を呼び出して単純なケースを処理することで、これらを簡潔かつエレガントに解決する方法を提供する。木構造の処理、経路の探索、構造(例:リストや文字列)の分解などでよく使用される。

シンプルな例

123456
def print_message(message, times): if times > 0: # Base case: stop when times is 0 print(message) print_message(message, times - 1) # Recursive case print_message("Hello, Recursion!", 3)

この動作を理解するために、ステップごとに見ていきます:

  1. times = 3 → 条件が真、メッセージを出力、print_message(message, 2) を呼び出す;
  2. times = 2 → 条件が真、メッセージを出力、print_message(message, 1) を呼び出す;
  3. times = 1 → 条件が真、メッセージを出力、print_message(message, 0) を呼び出す;
  4. times = 0 → 条件が偽、再帰が停止。

結果: メッセージが3回出力される。

コールスタック

関数が自分自身を呼び出すたびに、新しいフレームがコールスタック(アクティブな関数呼び出しを管理するメモリ構造)に追加されます。ベースケースに到達すると、それまでの呼び出しが逆順で一つずつ完了します。

Note
注意

すべての再帰関数にはベースケースが必要です。ベースケースがない場合、関数は永遠に自分自身を呼び出し続け、RecursionErrorが発生します。

タスク

スワイプしてコーディングを開始

再帰関数 list_sum を実装し、リスト内のすべての要素の合計を計算します。

  1. リスト numbersの場合は 0 を返します — これが基本ケースです;
  2. それ以外の場合は、最初の要素に、残りのリストでの再帰呼び出しの結果を加えて返します。

解答

Switch to desktop実践的な練習のためにデスクトップに切り替える下記のオプションのいずれかを利用して、現在の場所から続行する
すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 5.  1
single

single

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

some-alt