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

single

book再帰

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

Note
定義

再帰は、関数が自分自身を呼び出すことで問題をより小さな部分に分割して解決するプログラミング手法。繰り返し構造や自然な部分問題を持つ課題に特に有用。

再帰の主な要素:

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

なぜ再帰を使うのか?

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

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

この再帰プログラムがどのように動作するかを段階的に確認:

  1. 条件判定: times > 0 の場合、関数は処理を続行。ここでは times = 3 なので条件は真;
  2. メッセージの出力: 関数は "Hello, Recursion!" を出力;
  3. 再帰呼び出し: 関数は times - 1 で自分自身を呼び出す;
  4. 繰り返し: この処理は times が0になるまで続く;
  5. 終了: times > 0 の条件が偽になると再帰が終了し、プログラムが完了。

結果:メッセージ "Hello, Recursion!" が__3回__出力される。

フローの理解:

関数が自分自身を呼び出すたびに、新しいフレームがコールスタック(アクティブな関数呼び出しを管理するメモリ構造)に追加される。関数は times の値を小さくしながら自分自身を呼び出し続ける。ベースケース(times == 0)に到達すると停止する。その後、各呼び出しが逆順で一つずつ完了する。このバックトラッキングの動作が再帰の本質的な仕組み。

タスク

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

文字列として与えられた電話番号には、スペースハイフンかっこ、その他の数字以外の文字が含まれている場合があります。目的は、再帰を用いて数字のみを抽出することです。

  1. 入力文字列 numberの場合、空文字列を返します。
  2. number 条件で isdigit() メソッドを使い、文字列 if最初の文字数字かどうかを判定します。
  3. 数字であれば、再帰呼び出し2文字目以降の部分文字列format_phone_number に渡し、その結果と最初の数字連結します。
  4. 数字でない場合は、最初の文字をスキップして format_phone_number再帰的に呼び出します

解答

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

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

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

セクション 5.  1
single

single

AIに質問する

expand

AIに質問する

ChatGPT

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

some-alt