アルゴリズム (全97問中35問目)

No.35

fact(n)は,非負の整数nに対してnの階乗を返す。fact(n)の再帰的な定義はどれか。
  • if n=0 then 0 else return n×fact(n−1)
  • if n=0 then 0 else return n×fact(n+1)
  • if n=0 then 1 else return n×fact(n−1)
  • if n=0 then 1 else return n×fact(n+1)
  • [出題歴]
  • 応用情報技術者 H29秋期 問7
  • ソフトウェア開発技術者 H13春期 問12
  • ソフトウェア開発技術者 H18秋期 問12

分類

テクノロジ系 » アルゴリズムとプログラミング » アルゴリズム

正解

解説

それぞれの定義に対して4!(4の階乗)を計算し、正しい解(24)が得られるか否かで検証を行います。
  • fact(4)
    =4×fact(3) //n>0
    =4×3×fact(2) //n>0
    =4×3×2×fact(1) //n>0
    =4×3×2×1×fact(0) //n>0
    =4×3×2×1×0 //n=0
    =0
  • fact(4)
    =4×fact(5) //n>0
    =4×5×fact(6) //n>0
    =4×5×6×fact(7) //n>0
    …以降、無限ループとなり計算できません。
  • fact(4)
    =4×fact(3) //n>0
    =4×3×fact(2) //n>0
    =4×3×2×fact(1) //n>0
    =4×3×2×1×fact(0) //n>0
    =4×3×2×1×1 //n=0
    24
  • fact(4)
    =4×fact(5) //n>0
    =4×5×fact(6) //n>0
    =4×5×6×fact(7) //n>0
    …以降、無限ループとなり計算できません。
したがって正しい関数定義は「ウ」になります。
© 2010-2024 応用情報技術者試験ドットコム All Rights Reserved.

Pagetop