かなり(約三時間)悩んでまだ分からないので質問します。
再帰関数を用いて配列の中の数字(floatで定義されている)の合計を求めるプログラムを作っています。階乗を求めるプログラムの例を見ながらやっているのですがもう降参です。簡単だと思ったんですけど配列と組み合わせでもう頭がパニックです。どなたか答え(またはヒント)を教えてください。
よろしくお願いします。
なお、下のプログラムは私が1から作りましたので完全に間違っている可能性大です。参考にしないでください。(^^ゞ
#include <iostream>
using namespace std;
float recur(int numF);
int main()
{
int num;
float sum;
cout << "Enter an integer number: ";
cin >> num;
//再帰関数なんてこうやれば使わなくても出来るのに~!
//for(i=0; i<num; i++)
//sum += array[i];
sum = recur(num);
cout << "The sum of all the numbers: " << sum << endl;
return 0;
}
float recur(int numF)
{
int i;
float array[numF]; //定数式が必要です、と怒られる
for(i=0; i<numF; i++)
return array[i] += array[i-1]; //ここに再帰の式が必要
}
No.2
- 回答日時:
こんな感じかしら。
double sum(double array[], int num)
{
if (num == 1) {
return array[0];
} else {
return array[0] + sum(&array[1], num - 1);
}
}
とか、
double sum(double array[], int num)
{
if (num == 1) {
return array[0];
} else {
return sum(array, num - 1) + array[0];
}
}
> //再帰関数なんてこうやれば使わなくても出来るのに~!
配列の合計を求めることができるか、という問題ではなく、再帰関数を分かってますか、と
いう問題だから、仕方ないね。
No.1
- 回答日時:
//再帰関数なんてこうやれば使わなくても出来るのに~!
// for(i=0; i<num; i++)
// sum += array[i];
これがわかってるんだから後は簡単ですよ。
再起関数は「配列の先頭アドレス」と「要素数」を受け取るようにすればいいんです。
たとえば…
float recur(float * arry, int num)
{
if (num == 0) {
return 0.0 ;
}
return *arry + recur(&arry[1], num - 1) ;
}
あ、検証してないですからね。
バグってたらデバッグはご自分でお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- C言語・C++・C# C++初心者です stirng 2 2022/09/20 20:43
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- C言語・C++・C# C++プログラミングコードにポリモーフィズムを取り入れ方を教えてください。 2 2023/06/09 11:17
- C言語・C++・C# C言語階乗の総和を求める 2 2023/03/04 23:31
- C言語・C++・C# C言語: ポインタ 5 2022/06/01 08:33
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
配列の添え字が小数だとどうなる?
-
verilogで、配列の一部をタスク...
-
特定の文からメールアドレスの...
-
連想配列をループで作成するには
-
STLのvectorで作った配列をメン...
-
2次元配列CSVのソート
-
Perlで重複行を削除したい
-
濁点のソート
-
cakephpでのトランザクション処...
-
c言語 単位行列
-
プログラミングのPythonのnoteb...
-
多次元配列の重複削除
-
ランダム数値を連番と比べて足...
-
スカラーのベクトル微分
-
PHPでユニークIDを作る
-
PHPのセレクトボックスの初期値...
-
助けてください!九星気学のP...
-
fgetc関数について
-
配列から値を取得する方法。
-
変数の一致条件がたくさんある...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラミングのPythonのnoteb...
-
スカラーのベクトル微分
-
特定の文からメールアドレスの...
-
CArrayの要素としてCStringArra...
-
C言語 最大値と最小値を求めて...
-
行列
-
読み(あ行~わ行)ごとに分け...
-
配列の要素(value)に、変数を...
-
C言語の配列をPush(追加)する...
-
STLのvectorで作った配列をメン...
-
【PHP】配列のキー名の修正は可...
-
php で1から100までの素数の表...
-
Perlで重複行を削除したい
-
fgetc関数について
-
CArrayのソート
-
ファイルの書き込みについて教...
-
配列の添え字が小数だとどうなる?
-
PHPのmin関数、「1」以上の数値...
-
forとかで連番の変数を一気に格...
-
delphi 2次元配列がわかりません
おすすめ情報