教えて!しごとの先生
教えて!しごとの先生
  • 解決済み

基本情報技術者試験について。この再帰的アルゴリズムで同じ数字が2回印字されない理由を教えてください。 5を印字→proc…

基本情報技術者試験について。この再帰的アルゴリズムで同じ数字が2回印字されない理由を教えてください。 5を印字→proc4を呼び出す→5を印字 となるなら5が2回印字されるように思うのですが。

765閲覧

1人がこの質問に共感しました

知恵袋ユーザーさん

回答(3件)

  • ベストアンサー

    再帰処理の動作を理解するのは難しいと思いますが、理解できる切っ掛けになればと思い実際のプログラムを作成してみました。 (再帰呼び出しは便利ですが、プログラムの動作が読みにくくなる。) 添付した画像のプログラムについて、動作を解説します。 ※proc( 5 )など、()内は引数。引数はnの値と理解してもらえればOK。 ①main関数にて、proc( 5 )関数を呼び出ます。 ②proc関数にて、if文はelseに入ります。 ③start = nを出力します。 ④proc関数(つまり自分自身の関数)を呼び出します。この時引数は、5 - 1の計算結果を渡すので、proc( 4 )関数として関数を呼び出します。 ⑤②~④を繰り返す。 ⑥②にて、nが0になったらproc( 0 )関数で呼び出した関数は終了しますが、その後④でproc( 1 )関数とかproc( 2 )関数とかで呼んでいるので、その関数の途中の処理に戻ります。 ⑦戻り先は、end = nを出力するところです。 ⑧proc( n ) 関数を終了します。 ⑨⑦~⑧を繰り返す。 上記説明だけでは、ちょっとわかりにくいと思うので、関数の処理順を書きます。 main関数→proc( 5 )関数→proc( 4 )関数→proc( 3 )関数→proc( 2 )関数→proc( 1 )関数→proc( 0 )関数→proc( 1 )関数→proc( 2 )関数→proc( 3 )関数→proc( 4 )関数→proc( 5 )関数→main関数 <補足> プログラムはC言語で作成しています。 【paiza.io】というWebサイトで手軽に使えるので、いろいろ試してみると理解が深まるかも。

    なるほど:2

    ありがとう:1

< 質問に関する求人 >

基本情報技術(東京都)

この条件の求人をもっと見る

< 平日勤務で週末はリフレッシュしたい人におすすめ >

正社員×土日祝休み(東京都)

求人の検索結果を見る

もっと見る

この質問と関連する質問

    < いつもと違うしごとも見てみませんか? >

    覆面調査に関する求人(東京都)

    この条件の求人をもっと見る

    Q&A閲覧数ランキング

    カテゴリ: 資格

    転職エージェント求人数ランキング

    • 1

      続きを見る

    • 2

      続きを見る

    • 3

      続きを見る

    あわせて読みたい
    スタンバイプラスロゴ

    他の質問を探す

    答えが見つからない場合は、質問してみよう!

    Yahoo!知恵袋で質問をする

    ※Yahoo! JAPAN IDが必要です

    スタンバイ アプリでカンタン あなたにあった仕事見つかる