Ich versuche, Summen von Ziffern von 2 Zahlen Rekursion zurückzugeben. Ich denke, mein Algorithmus ist in Ordnung, aber ich bin nicht so gut mit Zeigern und ich verstehe nicht, warum sie seltsame Werte zeigen (wie wenn Variable nicht deklariert ist), wenn sie auf main
deklarierte Variablen zeigen und sie 0
sind.C Rekursion zurück 2 Werte
Hier ist mein Code:
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;
}
Was tun, wenn die Zahlen eine unterschiedliche Anzahl von Ziffern haben? –
Ich löste dieses Problem vorher, sie haben immer die gleiche Anzahl von Ziffern, hardcoded Zahlenwerte nur zum Beispiel. Ich brauche nur Hilfe bei meiner Rekursion. – Teemo
Eine einfachere Lösung wäre es, get_sums() so umzuschreiben, dass sie nur eine Zahl behandelt, und dann get_sums() zweimal aufzurufen. Dann können Sie den Rückgabewert von get_sums verwenden, um Dinge zu addieren. –