HOME»基本情報技術者試験掲示板»平成23年特別午後問8
投稿する

平成23年特別午後問8 [3417]

 名無しさん(No.1) 
https://www.fe-siken.com/kakomon/23_toku/pm08.html

https://www.fe-siken.com/kakomon/23_toku/pm08.html

関数Next内で呼び出された関数Initの戻り値は、どこに返されるのでしょうか?

main関数内のInitに返されるとしたら、呼び出された関数以外に値を返す、
ということになりますがそれはいいのでしょうか?


また、この問題における関数Initの存在意義がわかりません。
最初に"S[]=11100"を設定して以降、Nextの配列をトレースするだけで役に立っていないように思えます。

ご回答よろしくお願いいたします。
2021.06.18 15:38
 名無しさん(No.2) 
どなたか回答頼んます
2021.06.24 15:01
関数従属さん(No.3) 
FE ゴールドマイスター
>関数Next内で呼び出された関数Initの戻り値は、どこに返されるのでしょうか?

関数Init関数が終了するとNext関数内のInit(S,L-1,C)に戻ってきます。
但し戻り値(return 0またはreturn -1)はMain関数内でのR←Init(S,N,K)とは違い、
変数に代入されておらず、使用されておりません。

>この問題における関数Initの存在意義がわかりません。

関数Nextではループ処理内の2つのIF文にてS[L]が1、かつ、S[L+1]が0の箇所を探しています。
その後、S[L]とS[L+1]を入れ替え、Init(S,L-1,C)にて、S[1]~S[L-1]までについて
最初のC個は1、残りは0を設定する事になります。
尚、Cについては最初の1より1が連続している個数をカウントしております。


S[]=01101だと
S[L]が1かつ、S[L+1]が0の箇所はL=3、またこの時C=1となる
S[3]とS[4]を入れ替えS[]=01011となる
Init(S,L-1,C)を呼び出す、L=3、C=1の為Init(S,2,1)となる
Init(S,2,1)ではS[1]~S[2]について最初の1個に1、残りに0を設定し
S[]=10011となって、Next関数に戻る
2021.06.25 00:19
返信投稿用フォームスパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。
© 2010- 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop