私は整数配列の内容を合計するだけの小さなC++プログラムを持っています。デバッグ出力は、再帰関数が正しく呼び出されたことを示します。私も配列のアドレスをチェックしました - それはすべて同じです。単純なC++再帰が正しく動作しません - 私はなぜそれがわかりません
なぜこのコードがこの奇数を最後に出すのか理解できません。私は明らかに何か間違っているが、私はそれを得ていない。誰かが正しい方向にポインタを持っていますか?
#include <iostream>
using namespace std;
int arr_sum(int arr[], int idx) {
// debug
cout << "arr[" << idx << "] = " << arr[idx] << " (" << arr << ")" << endl;
if (idx > 0) {
return arr[idx] + arr_sum(arr, idx - 1);
}
}
int main() {
int a[10];
a[0]=1; a[1]=2;a[2]=3;a[3]=4; a[4]=5;
a[5]=6; a[6]=7;a[7]=8;a[8]=9; a[9]=0;
cout << a << endl; // debug
cout << "Sum: " << arr_sum(a, 9) << endl;
}
出力:あなたは、基本ケースを忘れてしまった
0x7ffc7c3fc7e0
arr[9] = 0 (0x7ffc7c3fc7e0)
arr[8] = 9 (0x7ffc7c3fc7e0)
arr[7] = 8 (0x7ffc7c3fc7e0)
arr[6] = 7 (0x7ffc7c3fc7e0)
arr[5] = 6 (0x7ffc7c3fc7e0)
arr[4] = 5 (0x7ffc7c3fc7e0)
arr[3] = 4 (0x7ffc7c3fc7e0)
arr[2] = 3 (0x7ffc7c3fc7e0)
arr[1] = 2 (0x7ffc7c3fc7e0)
arr[0] = 1 (0x7ffc7c3fc7e0)
Sum: 6295692
ステップを忘れて、問題が明らかであろう。 –
'else'はすべての違いをもたらします。 – IInspectable
'arr_sum(arr、0)'は何を返しますか? – immibis