質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
再帰

情報工学における再帰とは、プログラムのあるメソッドの処理上で自身のメソッドが再び呼び出されている処理の事をいいます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

593閲覧

ここの再帰関数の流れが分かりません...

novice114

総合スコア5

再帰

情報工学における再帰とは、プログラムのあるメソッドの処理上で自身のメソッドが再び呼び出されている処理の事をいいます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/09/12 11:31

前提・実現したいこと

このコードの再帰関数recursive(index,sum_value)のところの処理の流れを理解したいです.

発生している問題・エラーメッセージ

特にエラーなどはありません.

該当のソースコード

python3

1N = 5 2table = [1, 5, 7, 10, 21] 3num_query = 4 4num = [2, 4, 17, 8] 5 6check = [False]*2001 7 8def recursive(index,sum_value): 9 10 if index == N: 11 check[sum_value] = True 12 return 13 14 recursive(index+1,sum_value) #非加算 15 16 if sum_value+table[index] <= 2000: 17 recursive(index+1,sum_value+table[index]) 18 19recursive(0,0) #ここの処理がどのように進んでいくかが分かりません

分からないこと

まずはじめにrecursive(0.0)が始まると,index = 0, sum_value = 0になってindex != 5だからrecursive(1.0)が始まって,同様にしてrecursive(5.0)まで行ったら,index == 5 だからcheck[0] = True になって関数を抜け出してしまい,recurisive関数内の

if sum_value+table[index] <= 2000: recursive(index+1,sum_value+table[index])

ここの処理がいつ行われるのかが分かりません.

補足情報

AOJ ALDS1_5_A Exhaustive Search のある解答コードの一部です.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ここの処理がいつ行われるのかが分かりません.

recursive(index+1,sum_value)で呼び出した関数から戻った後です。

投稿2019/09/12 11:42

otn

総合スコア84555

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問