我想使用遞歸返回2個數字的數字的總和。我認爲我的算法沒問題,但是我對指針不太熟悉,而且我不明白他們爲什麼在指向main
中聲明的變量並且它們是0
時顯示奇怪的值(如變量未聲明時)。C遞歸返回2個值
這裏是我的代碼:
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()來處理一個數字,然後調用get_sums()兩次。然後你可以使用get_sums的返回值來加起來。 –