再帰を使用して2桁の数字の合計を返そうとしています。私のアルゴリズムはOKだと思いますが、私はポインタではあまりよくありません。main
で宣言された変数を指していて、それらが0
であると宣言したときに、なぜ変わった値が宣言されているのかわかりません。ここでC recursion returns 2 values
は私のコードです:
int get_sums(int **fp, int **sp, int n1, int n2) {
printf("fp: %d\n", fp);
printf("sp: %d\n", sp);
printf("n1: %d\n", n1);
printf("n2: %d\n", n2);
if (n1 == 0) {
return 0;
}
*fp += (n1 % 10);
*sp += (n2 % 10);
return get_sums(&fp, &sp, n1/10, n2/10);
}
int main(void) {
int f = 0, s = 0;
int *fp = &f;
int *sp = &s;
int first = 123, second = 456;
get_sums(&fp, &sp, first, second);
printf("First sum: %d\nSecond sum: %d\n", *fp, *sp);
return 0;
}
数字の桁数が異なる場合はどうすればいいですか? –
私は以前にその問題を解決しました。それらは常に、たとえば数字のような数字とハードコードされた数値を持っています。私は私の再帰の助けが必要です。 – Teemo
より簡単な解決策は、get_sums()を書き換えて1つの数値だけを処理し、次にget_sums()を2回呼び出します。次に、get_sumsの戻り値を使用して項目を追加できます。 –