2016-06-26 11 views
-1

angegebene Methode mit kommentierten Teil funktioniert gut, ich bin Tring, Rekursion statt Zyklus zu tun.Huffman, Stack Überlauf

aber, mit dieser Rekursion gibt es Stack-Powerflow-Fehler auf großen Dateien.

Unbehandelte Ausnahme bei 0x621dffde in Huffman Encoding.exe: 0xC00000FD: Stack-Überlauf.

+3

Es gibt keine Verzweigung, um zu bestimmen, ob die Rekursion fortgesetzt werden soll oder nicht, sodass eine unendliche Rekursion ausgeführt wird. – MikeCAT

+0

Verwandle deine Rekursion in eine Schleife. Es gibt eine natürliche Grenze für die Tiefe der Rekursion - Rekursion für jedes Bit der Eingabe würde diese Grenze sicherlich überschreiten. Die Rekursion dient nicht einmal einem bestimmten Zweck in Ihrem Code. –

+0

if (map [code] == PSEUDO_EOF) zurückgeben; Am Ende des codierten Textes gibt es PSEUFO_EOF char, das die Rekursion stoppt. –

Antwort

2

Es gibt ein Limit für die Verschachtelung von Funktionen. Wenn Sie für Ex versuchen. nest Funktion in 10000-facher Funktion erhalten Sie einen Fehler. Sie können die Rekursion verwenden, um die Huffman-Dekodierung durchzuführen, aber Sie müssen sie mit Iteration (oder zweiter Rekursion) kombinieren. Sie sollten Ihre Rekursion wahrscheinlich zurücksetzen, nachdem Sie den richtigen Code gefunden haben, und zum nächsten Code bis EOF iterieren.

Verwandte Themen