2022年 ITパスポート 午前 問96

関数calcXと関数clacYは、引数inDataを用いて計算を行い、その結果を戻り値とする。 関数calcXをcalcX(1)として呼び出すと、関数calcXの変数numの値が、1→3→7→13と変化し、戻り値は13となった。 関数clacYをcalcY(1)として呼び出すと、関数calcYの変数numが、1→5→13→25と変化し、戻り値は25となった。 プログラムのa、bに入れる適切な組み合わせはどれか。

[プログラム1]
〇整数型:calcX(整数型:inData)
 整数型:num, i
 num ← inData
 for(iを1から3まで1ずつ増やす)
  num ←   a  
 end for
 return num
[プログラム2]
〇整数型:calcY(整数型:inData)
 整数型:num, i
 num ← inData
 for(  a  )
  num ←   b  
 end for
 return num

a b
2×num + i iを1から7まで3ずつ増やす
2×num + i iを2から6まで2ずつ増やす
num + 2×i iを1から7まで3ずつ増やす
num + 2×i iを2から6まで2ずつ増やす


答え エ


解説
関数calcXをcalcX(1)として呼び出すと、関数calcXの変数numの値が、1→3→7→13と変化していることから、変数numの変化量は2→4→6の階差数列になっていることのでaに入るのは“num + 2×i”になります。
関数clacYをcalcY(1)として呼び出すと、関数calcYの変数numが、1→5→13→25と変化し、aに入るのは“num + 2×i”なのと、変数numの変化量が4→8→12なので、for文の変数iの最初の値は2、2番目は4、3番目は6になるので、bに入るのは“iを2から6まで2ずつ増やす”になります。

a b
num + 2×i iを2から6まで2ずつ増やす


キーワード
・階差数列

キーワードの解説
  • 階差数列
    ある数列の隣り合う項(数)の差(引き算の結果)を見ると別の数列になっていることです。
    数式で表すとある数列を{an}とすると、この数列の任意の隣り合う項の差 an+1 - an 求めると別の数列{bn}のn番目の項 bn になっています。

もっと、「階差数列」について調べてみよう。

戻る 一覧へ 次へ