かなり(約三時間)悩んでまだ分からないので質問します。
再帰関数を用いて配列の中の数字(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ランキング
-
スカラーのベクトル微分
-
C言語で全角文字の扱いについて
-
verilogで、配列の一部をタスク...
-
MYSQLとPHPによって取得する多...
-
連想配列で値が空だったら、要...
-
行列
-
配列の要素(value)に、変数を...
-
Texでの数式
-
PHPでの簡易ビンゴゲームでの疑...
-
PHPでテキストファイルの一部を...
-
別ファイルの構造体の値を読み...
-
PHPで連想配列のプルダウンメニ...
-
配列を分解したいのですが
-
バイナリファイルの内容を、そ...
-
ヒアドキュメントの中のfor文
-
配列をループでたくさん宣言し...
-
複数行のデータのPOST処理に関して
-
配列を回すとき、最後の要素だ...
-
String だと「 ByRef引数の型が...
-
配列一致(要素順番は違うが内容...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
スカラーのベクトル微分
-
STLのvectorで作った配列をメン...
-
特定の文からメールアドレスの...
-
配列の要素(value)に、変数を...
-
読み(あ行~わ行)ごとに分け...
-
ファイルの書き込みについて教...
-
verilogで、配列の一部をタスク...
-
CArrayの要素としてCStringArra...
-
pythonのnumpyでの繰り返しでの...
-
C言語の配列をPush(追加)する...
-
php キーソート キーが重複した...
-
CArrayのソート
-
【PHP】配列のキー名の修正は可...
-
多次元配列をエンコードする関...
-
PHPは何故値渡しより参照渡しの...
-
cakephpでのトランザクション処...
-
pg_copy_fromの使い方について...
-
array_intersectで空欄を比較し...
-
濁点のソート
-
配列中のあるキー、値を取得し...
おすすめ情報