HOME»基本情報技術者試験掲示板»再帰処理について
投稿する
再帰処理について [5760]
KOINUさん(No.1)
再帰処理が複雑になってくると、再帰呼び出しの1つ終わり、1つ前の処理に戻る際、どこに戻ればよかったか、途中で迷子になります。やり方として、問題文に番号を振ることがあるみたいですが、問題文を書き写す時間が勿体無い気がします。他におすすめの対策方法があれば教えてほしいです。やはり問題文を繰り返しとき、自分なりのわかりやすい書き方を見つけるのが一番でしょうか。
2025.01.19 13:02
まーぼさん(No.2)
★FE シルバーマイスター
数式や日本語チックに考えると意外と簡単に捉えられるかも知れません。
例えば、2のn乗を求める関数(以下はPythonでの実装例)
def twoPowerNByRecursiveFunction(n):
if n == 0:
return 1
return twoPowerNByRecursiveFunction(n-1) * 2
数学的には、
2^n :=
{1 (n = 0)
{2^(n-1) * 2 (otherwise)
日本語的には、
2のn乗の求め方は、一般的には2の(n-1)乗に2を掛ければよい。ただし、n=0のときは、1になる。
のような感じです。
ですので、再帰関数を見るときに、
def twoPowerNByRecursiveFunction(n):
///
if n == 0:
return 1
/// ↑この部分が特殊な場合
return twoPowerNByRecursiveFunction(n-1) * 2
/// ↑この部分が一般的な場合
のような感じで色付けすると脳の容量を抑えられるかも知れません。
例えば、2のn乗を求める関数(以下はPythonでの実装例)
def twoPowerNByRecursiveFunction(n):
if n == 0:
return 1
return twoPowerNByRecursiveFunction(n-1) * 2
数学的には、
2^n :=
{1 (n = 0)
{2^(n-1) * 2 (otherwise)
日本語的には、
2のn乗の求め方は、一般的には2の(n-1)乗に2を掛ければよい。ただし、n=0のときは、1になる。
のような感じです。
ですので、再帰関数を見るときに、
def twoPowerNByRecursiveFunction(n):
///
if n == 0:
return 1
/// ↑この部分が特殊な場合
return twoPowerNByRecursiveFunction(n-1) * 2
/// ↑この部分が一般的な場合
のような感じで色付けすると脳の容量を抑えられるかも知れません。
2025.01.19 17:12
KOINUさん(No.3)
ご丁寧に返信ありがとうございました!次回から、頭に入れてやってみようと思います!!
2025.01.19 17:56