2011-01-08 5 views
-3
#include <stdio.h> 
int f(int n) 
{ 
    if(n <= 1) 
    return 1; 
    if(n%2 == 0) 
    return f(n/2); 
    return f((n-1)/2) + f((n-1)/2+1); 
} 

/*To test above function */ 
int main() 
{ 
    int a = 11; 
    printf("%d", f(11)); 
    getchar(); 
    return 0; 
} 
+3

Das Programm druckt 5 für mich ohne Segmentierung Fehler. Diese Funktion geht nicht in unendliche Rekursion, jedenfalls nicht für n = 11. – IVlad

+0

Anfangs gibt es eine Antwort und dann tritt der Fehler nach einer Sekunde oder so auf. – Ankur

+1

Würde es Ihnen etwas ausmachen, uns mehr Informationen über Ihre Hardware, Betriebssysteme und Entwicklungstools (Compiler, C-Bibliotheksversion usw.) zu geben? – thkala

Antwort

1

Warum nicht nur, um es im Debugger zu verfolgen, und sehen, was goind falsch ist?

+0

Ich habe versucht, es zu debuggen, es zeigt Segmentierung Fehler. – Ankur

+4

Dies sollte wahrscheinlich nur ein Kommentar gegen die Frage sein - es ist nicht wirklich eine Antwort in irgendeinem sinnvollen Sinne des Wortes. –

+2

Nun, ich denke, es ist die richtige Antwort. Zu jeder Frage "mein Code stürzt ab" lautet die korrekte Antwort "Verwenden Sie den Debugger, um den Absturz zu analysieren". Meistens ist das Problem im Debugger offensichtlich. – Suma

0

Es ist nichts falsch mit diesem Programm, es gibt mir keine Art von Endlosschleife oder seg Fehler (und da Sie die < = 1 Bedingung haben, stürzt das Programm nicht sicher). Irgendwas sagt mir, dass Ihre Maschine hier aus irgendeinem Grund fehlerhaft ist ... vielleicht fehlt Ihnen der Speicher oder die Programme, die Sie zurückschicken? Oder sogar Compiler ausflippen? (das ist mir schon passiert). Versuchen Sie, den Code auf andere Maschine zu starten, wenn möglich und finden Sie heraus, ob es immer noch seg Fehler oder nicht

+0

Es funktioniert jetzt, danke euch allen – Ankur

1

Dieser Code kompiliert und läuft gut für mich. Das Ergebnis ist 5. Haben Sie das Schlüsselwort explicit ausprobiert, um festzustellen, ob es sich um einen Optimierungsfehler handelt? BEARBEITEN: Wenn das Problem getchar() ist, könnte das Problem Ihr Betriebssystem zur Laufzeit oder Ihre Bibliothek zur Kompilierzeit sein. Ist das eine saubere Kompilierung? Welchen Compiler benutzen Sie?

Verwandte Themen