平成22年春期午後問8

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】
関東平野さん  
(No.1)
https://www.fe-siken.com/kakomon/22_haru/pm08.html
こちらの設問2の
slist1{}とslist2{}の動きがどうなっているのか掴めません
どなたかご教授いただけないでしょうか。
よろしくお願いいたします。
2022.11.14 21:00
jjon-comさん 
FE ゴールドマイスター
(No.2)
再帰呼出しですから、
1回目のSort()呼出しの中の slist1[],slist2[] という変数、
2回目のSort()呼出しの中の slist1[],slist2[] という変数、
3回目のSort()呼出しの中の slist1[],slist2[] という変数、
……はそれぞれ別になっています。

再帰呼出しによる入れ子の関係を書き下してみるとこんな感じ。

Sort(list[]={3,8,2,7,5,1})呼出し
+―――――――――――――――
|・slist1[]={3,8,2} と slist2[]={7,5,1}に分割
|・Sort(list[]={3,8,2})呼出し
|+―――――――――――――――
||・slist1[]={3} と slist2[]={8,2}に分割
||・Sort(list[]={3})呼出し
||+―――――――――――――――
|||・num=1なので戻る
||+―――――――――――――――
||・Sort(list[]={8,2})呼出し
||+―――――――――――――――
|||・slist1[]={8} と slist2[]={2}に分割
|||・Sort(list[]={8})呼出し
|||+―――――――――――――――
||||・num=1なので戻る
|||+―――――――――――――――
|||・Sort(list[]={2})呼出し
|||+―――――――――――――――
||||・num=1なので戻る
|||+―――――――――――――――
|||・Merge({8},{2})呼出し。list[]は整列済{2,8}になる。
||+―――――――――――――――
||・Merge({3},{2,8})呼出し。list[]は整列済{2,3,8}になる。
|+―――――――――――――――
|・Sort(list[]={7,5,1})呼出し
|+―――――――――――――――
||・slist1[]={7} と slist2[]={5,1}に分割
||・Sort(list[]={7})呼出し
||+―――――――――――――――
|||・num=1なので戻る
||+―――――――――――――――
||・Sort(list[]={5,1})呼出し
||+―――――――――――――――
|||・slist1[]={5} と slist2[]={1}に分割
|||・Sort(list[]={5})呼出し
|||+―――――――――――――――
||||・num=1なので戻る
|||+―――――――――――――――
|||・Sort(list[]={1})呼出し
|||+―――――――――――――――
||||・num=1なので戻る
|||+―――――――――――――――
|||・Merge({5},{1})呼出し。list[]は整列済{1,5}になる。
||+―――――――――――――――
||・Merge({7},{1,5})呼出し。list[]は整列済{1,5,7}になる。
|+―――――――――――――――
|・Merge({2,3,8},{1,5,7})呼出し。list[]は整列済{1,2,3,5,7,8}になる。
+―――――――――――――――
2022.11.15 00:18

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。

その他のスレッド


Pagetop