平成19年秋期 午前問14

mowさん  
(No.1)
proc(n)のnの数字が1ずつ減っていって54321と印字されるのは理解できるのですが、
その後の12345と印字されていく仕組みが理解できずにいます。
n=0 ならば戻るという処理なのでproc(0)からproc(1)へ戻るのかなと思ってましたが
n = 0でなくてもproc(1)からproc(2)、proc(2)からproc(3)、proc(3)からproc(4),
proc(4)からproc(5)へと戻るという処理の流れが理解できずに困ってます。
2023.05.30 18:40
boyonboyonさん 
AP シルバーマイスター
(No.2)
proc(n)は、n=0 の時以外は
①nを印字、
②proc(n-1)を呼び出す
③nを印字
という、3つのことを行います。
(nを印字するのが、proc(n-1)を呼び出す前と後、合計2回あります。)

分けて書くと

proc(5)
  5を印字
  proc(4)
  5を印字
終了

proc(4)
  4を印字
  proc(3)
  4を印字
終了
・・・・

proc(1)
  1を印字
  proc(0)→何もしないで戻る。
  1を印字
終了

入れ子にして書くと
proc(5)
  5を印字
    4を印字
      3を印字
        2を印字
          1を印字
          proc(0)→何もしないで戻る。
          1を印字
        2を印字
      3を印字
    4を印字
  5を印字
終了

になります。
2023.05.30 22:46

返信投稿用フォーム

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

その他のスレッド


Pagetop