Ich würde eine Funktion schreiben, die eine Struktur ausarbeitet und die Länge eines Array von Zeichen zurückgibt, das in derselben Struktur rekursiv definiert ist. Die struct ist:Wie Zugriff mit Rekursion auf ein Element einer Struktur
typedef struct BinSeq {
char* data;
int dimension;
}BinSeq
Daten, das Feld von Zeichen, nur zwei Arten von Charakter hat: ‚0‘ und ‚1‘, während die Dimension die Länge des Arrays, aber nicht mit der Sequenz von ‚0 ' und 1'. Also versuche ich, diese Funktion zu schreiben:
int length(BinSeq* bin_seq) {
int i;
if(bin_seq->data[i] == '0' || bin_seq->data[i] == '1')
{
i++;
return 1 + length(bin_seq->data[i]);
}else
return 0;
}
aber ich habe may Zweifel. Zuerst durch den Compiler verursacht, der sagt:
warning: passing argument 1 of ‘length’ makes pointer from integer without a cast [enabled by default]
return 1 + length(bin_seq->data[i]);
^
recursion.c:13:6: note: expected ‘struct BinSeq *’ but argument is of type ‘char’
int length(BinSeq* bin_seq) {
Wie kann ich auf den Daten arbeiten, wenn ich musste meine Funktion * bin_seq die Binseq passieren? Ich weiß, dass mein Code dafür falsch ist, aber wenn ich das Gewicht berechnen möchte, musste ich die Variable i erhöhen, aber das wird nicht, denke ich, zunehmen. Wie kann ich daran arbeiten?
Sie * nicht definiertes Verhalten aufgerufen * durch einen Wert von nicht initialisierten Variable mit automatischer Speicherdauer 'I', Das ist unbestimmt. – MikeCAT
Entschuldigung, aber ich konnte nicht klar, was Sie wollen. 'BinSeq' scheint keine Zeiger zum nächsten Knoten zu haben. – MikeCAT
@MikeCat Wie kann ich an den Array-Daten arbeiten, wenn ich an meine Funktion bin_seq übergeben werden muss, die vom Typ BinSeq ist? –