[06a1] 再帰の除去1

次に示す関数funcの再帰を除去し、同じ計算を行う再帰呼び出しのない 関数funcを作成せよ。下請け関数が必要なら作成してよい。

int func(int i) {
  if(i <= 0) { return 1; }
  return i * func(i-2);
}

記号列 

コード 

選択肢

ア int func(int i) {
イ int func1(int i) {
ウ int func(int i, int r) {
エ int func1(int i, int r) {
オ }
カ return func1(i);
キ return func1(i, 1);
ク return func1(i, 0);
ケ while(true) {
コ if(i <= 0) { return 0; }
サ if(i <= 0) { return 1; }
シ if(i <= 0) { return r; }
ス i = i - 1;
セ i = i - 2;
ソ r = i * r;
タ r = r + i*i;

選択肢の行をドラグして上のコード領域に配置してください。 コード領域の行はドラグにより位置が変更できます。 削除したい場合は選択肢の領域に戻してください。