调试器显示的分段错误。无法找到故障

时间:2011-01-09 10:18:18

标签: c recursion

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

4 个答案:

答案 0 :(得分:3)

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

此外,您正在从void函数返回一些内容(两次!)。您的代码将无法正常工作。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

除了其他人所说的,在你修复所有其他程序错误之后,你正在指导你的程序进行无限递归。

答案 3 :(得分: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");
}

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