2018年02月20日

平成29年度 技術士第一次試験問題 情報工学部門 V−3

V−3
次のC言語のプログラムを実行したときに出力される
結果はどれか。

#include <stdio.h>
int p(int x, int y) {
 if (x > y) return p(x - y, y);
 if (x < y) return p(y - x + 2, x);
 return x;
}

int main ()
 printf("%d", p(5, 6));
}

@ 1  A 2  B 3  C 4  D 5



【正解】 @

再帰プログラムに関する問題である。
if (x > y) return p(x - y, y) を (1)
if (x < y) return p(y - x + 2, x) を (2)
return x を (3)
とすると、以下のように計算される。

p(5, 6) = p(6-5+2, 5) = p(3, 5) ・・・(2)より
p(3, 5) = p(5-3+2, 3) = p(4, 3) ・・・(2)より
p(4, 3) = p(4-3, 3) = p(1, 3) ・・・(1)より
p(1, 3) = p(3-1+2, 1) = p(4, 1) ・・・(2)より
p(4, 1) = p(4-1, 1) = p(3, 1) ・・・(1)より
p(3, 1) = p(3-1, 1) = p(2, 1) ・・・(1)より
p(2, 1) = p(2-1, 1) = p(1, 1) ・・・(1)より
p(1, 1) =
1 ・・・(3)より

EXCELのマクロのご相談なら  ファーストマクロ  

タグ:C言語
posted by ファーストマクロ at 20:20| Comment(0) | H29技術士一次試験(情報工学)
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。