2011-01-09 10 views
-1
#include <stdio.h> 
void fun(int x) 
{ 
    if(x<=20) 
    { 
    printf("d\n",x); 
    return fun(2*x); 
    return fun(x/2); 
    } 
} 
main() 
{ 
     int x; 
     printf("Enter the number\n"); 
     scanf("%d",x); 
     fun(x); 
} 
+2

Implizite 'int'? Zwei Rückgaben in einer Methode? –

Antwort

3

Das sollte scanf("%d", &x); und wahrscheinlich printf("%d\n", x); sein.

Auch Sie Rückkehr etwas (zweimal!) Von einer void Funktion. Ihr Code wird nicht so funktionieren wie er ist.

+1

+1. GCC kompiliert es. Mit "-Wall" beklagt es sich natürlich (zu Recht). –

+0

@Billy, ich denke, es fällt nur den Rückgabewert. Es würde Spaß machen, wenn es den Funktionsaufruf optimiert, weil sein Ergebnis nie verwendet wird. Danke für die Info :) –

1

in der Funktion, wenn Sie planen, den Wert von x zu drucken, sollte printf sein ("% d \ n", x); fehlt Ihnen% symbol.also die zweite return-Anweisung in Ihrer Funktion wird nie ausgeführt ..

+0

Das stimmt zwar nicht, aber das verursacht nicht den Segfault. –

0

Oben auf was andere Leute gesagt, nachdem Sie alle anderen programmatischen Fehler beheben Sie Ihr Programm auf eine unendliche Rekursion.

+0

Schreiben Sie eine Funktion Compute (int x) so, dass sie die Werte von x, 2x, 4x, 8x ... ausgibt. bis der Wert 20000 nicht überschreitet. Nach Erreichen von 20000 kommt es wieder von ... 8x, 4x, 2x, x und bleibt dort stehen. Hinweis: (1) Sie können keine lokalen Variablen in der Funktion verwenden (2) Sie können keine Schleifen (für oder while oder do..while) oder irgendeine GOTO-Anweisung verwenden. – Ankur

+0

Dies ist die eigentliche Frage, kann jetzt jemand Code für mich? – Ankur

+0

Ich schlage vor, dass Sie das "Hausaufgaben" -Tag zu Ihrer Frage hinzufügen, und bearbeiten Sie es bitte und stellen Sie die eigentliche Frage dort. Andernfalls werden die Leute Ihre Frage abstimmen und es wird Ihren zukünftigen Ruf auf der Website beeinflussen. –

0
#include <stdio.h> 
void fun(int x) 
{  
    if(x<=20000) 
    { 
    printf("%d\n",x); 
     fun(x<<1);  
    printf("%d\n",x); 
    } 
} 
main() 
{ 
     int x; 
     printf("Enter the number\n"); 
     scanf("%d",&x); 
     printf("\n"); 
     fun(x); 
     system("pause"); 
} 

Dies ist das richtige Programm, das ich gesucht habe. Danke euch allen!

+0

Verwenden Sie die Schaltfläche {}, um einen Codeblock beim Veröffentlichen ordnungsgemäß zu formatieren. –

Verwandte Themen