2011-01-09 74 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

隐式`int`?一种方法返回两个? – 2011-01-09 10:20:59

回答

3

这应该是scanf("%d", &x);,并且可能printf("%d\n", x);

另外,您从void函数返回一些东西(两次!)。您的代码将无法正常工作。

+1

+1。 GCC编译它。当然,用'墙壁'(正确)抱怨。 – 2011-01-09 10:22:38

+0

@比利,我想这只是降低了返回值。但是,如果它优化了函数调用,因为它的结果从来没有被使用过,那将很有趣。感谢您的信息:) – 2011-01-09 10:24:52

1

如果您打算打印x的值,它应该是printf(“%d \ n”,x); 你缺少%symbol.also函数中的第二个return语句将永远不会执行。

+0

虽然这是真的,但这不是导致段错误的原因。 – 2011-01-09 10:26:19

0

除了其他人说的之外,在修复所有其他编程错误之后,您正在将程序指向无限递归。

+0

编写一个函数Compute(int x),使其输出x,2x,4x,8x ...的值。直到数值不超过20000.达到20000后,它再次从...... 8x,4x,2x,x回来并停在那里。 注意:(1)不能在函数中使用任何局部变量 (2)不能使用任何循环(for或while或do..while)或任何GOTO语句。 – Ankur 2011-01-09 10:55:38

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"); 
} 

这是正确的程序,我一直在寻找。谢谢大家!