Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ Pythonにおける関数の再帰 | セクション
Python関数
セクション 1.  14
single

single

bookPythonにおける関数の再帰

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

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)に到達すると停止する。その後、各呼び出しが逆順で順に完了する。このバックトラッキングの動作が再帰の本質的な仕組み。

タスク

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

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

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

解答

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

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

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

セクション 1.  14
single

single

AIに質問する

expand

AIに質問する

ChatGPT

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

some-alt