プロが教えるわが家の防犯対策術!

至急お願い致します。 C言語の問題です。
forやwhile文は使わずにここに書き加えるのところを教えてください。
課題2-1(再帰) 指定範囲の整数の和を、繰り返しを使わず再帰を用いて求めるプログラムを作成する。 整数 m,n(ただし m≦n)について、m から n までの和を求める関数 rangeSum とする。
その値は
・m=n のとき m
・それ以外のとき rengeSum(m,n-1) + n
として計算できる。
この方法を用いたプログラムを完成させる。未完成プログラムは pae02-1-unfinished.c
を補って作成する。ソースコードと、入力として 3 と 7 を与えた場合の実行結果を提出せ よ。
なお、下記の実行結果の例のように、途中経過を示す「printf("そのために、%d..%d の 和 + %d を計算します",....);」も解答プログラムの関数 rangeSum の中に含めること。
参考(2 と 4 を与えた場合の実行結果)
$ ./a.out
m と n を入力: 2 4
2..4 の和を計算します
そのために、2..3 の和 + 4 を計算します そのために、2..2 の和 + 3 を計算します 答えは 9 です
未完成プログラム
#include <stdio.h>
int rangeSum(int a, int b){ int r;
///ここに書き加える return r;
}
int main(void){
int m, n;
printf("mとnを入力: ");
fflush(stdout);
scanf("%d", &m);
scanf("%d", &n); printf("%d..%dの和を計算します¥n", m, n); printf("答えは%dです¥n", rangeSum(m,n));
return 0; }

A 回答 (3件)

    • good
    • 0

わざわざ、問題に「ほとんど回答」が書いてある。



>その値は
>・m=n のとき m
>・それ以外のとき rengeSum(m,n-1) + n
> として計算できる。

そのまま書いて、prtinf() を付けくわえれば、終了。
    • good
    • 0

「再帰を用いて」とありますからそう作りましょう。


再帰呼び出しとは何か、どういうものかがわからない場合は教科書を読み返しましょう。習っていない問題は出されないはずですから。

ちなみに答えを1行だけ(1回だけ)出力したいのであれば、再帰呼び出しをするかしないかの判定を行っている箇所で「再帰呼び出しをせずに終了する」となったところで答えをprintすればよいです。
その辺のロジックの動きをよく頭の中でイメージすることです。

参考まで。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!