FE Study
FE Study メニュー

学習記録はこのブラウザー内に保存されます。

ホーム問題を解く
ログイン不要・無料で学習

ONE QUESTION, ONE STEP

再帰を学ぼう

選んで、確かめて、理解する。焦らず進めましょう。

QUESTION 53

非負の整数nに対する関数digitSumを次のように定義する。digitSum(729)の戻り値はいくつか。modは整数除算の余り、divは商の小数部を切り捨てる整数除算を表す。 ○ 整数型: digitSum(整数型: n) if (n = 0) return 0 else return (n mod 10) + digitSum(n div 10) endif

出典:本サイト オリジナル教材(2026年)

本サイトで独自に作成。IPAの試験問題からの転載ではありません。

公開日:

解答を一つ選んでください

選択肢を選んで、答え合わせをしましょう。

回答せずに正解・解説を確認する

正解:ウ 18

この表示だけでは、回答数や正答率は変わりません。

解説

digitSum(729)は9 + digitSum(72)、digitSum(72)は2 + digitSum(7)、digitSum(7)は7 + digitSum(0)となります。digitSum(0)は0なので、呼出し元へ順に戻ると7、9、18です。結果は十進表記の各桁7+2+9の合計18になります。

ア

9は一の位だけの値、またはdigitSum(72)の値です。最外側の呼出し全体の答えではありません。

イ

7+9の値で、十の位2が抜けています。

ウ

各呼出しの余り9、2、7を合計した18です。

エ

関数は元の数をそのまま返さず、各桁を分解して足しています。

関連知識

再帰では終了条件と、終了へ近付く引数の変化を確認します。非負整数を10で整数除算すると桁数が減り、最終的に0になります。呼出しごとにnは別の値です。

間違えやすいポイント

再帰の呼出しを進める段階だけで終わらず、戻り値を足しながら戻る段階も追います。

覚え方

余りで一桁を取り、商で残りへ進む。

実務での意味

桁の処理や木構造の走査など、同じ形の小さな問題へ分解する関数を読む練習になります。

解説:本サイト編集部によるオリジナル文章

この問題の前後に、プログラミングの基礎知識ガイドで、 仕組み・比較・解き方を確認できます。 この問題の誤りを報告する(GitHub)。問題IDとURLを入力した下書きが開きます。自動投稿は行いません。 投稿は公開されるため、氏名・住所・メールアドレス・学習記録は記入しないでください。 詳しくはお問い合わせ窓口をご覧ください。